new Solution.LuxuriousCar().printlnDesire();
а почему после LuxuriousCar пишем скобки ()?
почему после Solution не пишем ведь он тоже класс?
Anonymous #2632922
35 уровень
а почему после LuxuriousCar пишем скобки ()?
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ada
31 мая 2022, 10:53
строчка new Solution.LuxuriousCar() создает новый объект, поэтому пишем скобки
а эта часть - Solution.LuxuriousCar - это просто полное имя класса, после имени класса мы не ставим скобки
т.е. вы вот так можете записать:
это равносильно такому примеру:
+3
Aleksey
31 мая 2022, 08:26
Класc LuxuriousCar находится внутри класса Solution. Поэтому мы обращаемся к нему через точку. А скобки будут и при создании объекта класса Solution.
0
Anonymous #2632922
31 мая 2022, 10:27
вот в данном примере почему мы не пишем скобки после Solution ?
0
comrade_b
31 мая 2022, 11:19решение
Если условно и простым языком, то:
() - две скобки это приказ инициализации объекта (или инициализации метода, когда ты обращаешься к методу). Ты как-будто говоришь яве: инициализируй объект этого класса.
Теперь по поводу почему скобки идут после машины, а не в солюшен:
То есть если разбить по шагам, то:
new Solution. - я иду в класс солюшен и не создаю ничего
LuxuriousCar() - я создаю объект класса люкскар. Две скобки обозначают инициализацию создания объекта этого класса.
Теперь по поводу
Тут по аналогии с тем, что выше, у тебя приказ состоит из трех шагов.
Solution. - я иду в класс солюшен и не создаю ничего
LuxuriousCar() - я создаю объект класса люкскар. Две скобки обозначают инициализацию создания объекта этого класса.
printlnDesire() - я вызываю метод (набор инструкций) для вновь созданного объекта люкс кар, который я создал во втором шаге. +4
hidden #598481
31 мая 2022, 11:21
Потому что это вложенный (nested), а не внутренний (inner) класс.
Проще говоря, потому что класс LuxuriousCar - статический внутри Solution, соответственно он относится ко всему классу Solution, а не к его объектам. Если бы не было static, то надо было бы обращаться к классу через объект Solution:
+1
Сонмониус Full Stack Developer
31 мая 2022, 11:40
мы не создаем новый обьект Solution, а в данном случае указываем его как путь - что-то вроде папок на компьютере. Допустим у нас есть папка FastCar, в которой мы хотим создать файл newCar.LuxoriousCar. Папка FastCar в свою очередь находится в папке Car, а Сar в корневой папке Factory. Тогда путь к файлу newCar.LuxoriousCar на виндоус был бы такой
Factory\Car\FastCar\NameNewCar.LuxoriousCar
В нашем случае, каждая из папок это внешний класс, где вложенная папка, это внутренний класс, и в отличие от папок на компьютере, мы можем создать объект каждой из таких "папок" - var nameFile = new nameDirectory().
Поэтому в переводе на язык java, Factory\Car\FastCar\NameNewCar.LuxoriousCar можно записать так:
var NameNewCar = new Factory.Car.FastCar.LuxoriousCar();
дословно это означает (мы создаем обьект класса LuxoriousCar(), который является вложенным классом для класса Factory.Car.FastCar, который в свою очередь является вложенным классом для класса Factory.Car, который в свою очередь является вложенным классом для класса Factory)
И идя по цепочке, можно создать обьекты каждого из перечисленных классов
new Factory.Car.FastCar.LuxoriousCar() - объект класса LuxoriousCar
new Factory.Car.FastCar() - объект класса FastCar
new Factory.Car() - объект класса Car
new Factory() -объект класса Factory
+1
comrade_b
31 мая 2022, 16:21
Да, я забыл сказать, и меня поправил vk, что это статический вложенный класс люксмашина класса солюшен. Но сути не меняет: с помощью круглых скобок мы инициализируем/создаем обект класса люксмашина вложенного в класс солюшен
0