почему нельзя так:
dog1 = new Dog ();
Зачем указывать тип или класс Dog:
Dog dog1 = new Dog();
Ведь и так понятно что создается новый объект типа Dog, когда создается ссылка на этот объект.
Помогите разобраться.
Антон ФМ
8 уровень
Класс объекта
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Alex
22 декабря 2019, 18:25
Антон спасибо за хороший вопрос!
Тут дело такое что справа от знака равно может оказаться что угодно в рамках правил, которые рассматриваются в будущих темах таких как «Полиморфизм», «Наследование» или «Дженерики»,
например что-то вроде, где кастим дабл к инту и заносим в переменную myInt:
или объектов:
Так и слева от знака равно может быть много различных вариантов для типа нашей переменной
или в случае с переменной dog1
это называется полиморфной ссылкой, где клас Dog должен быть наследником от класса Animal.
Может нам в зависимости от задач нужен архив догов
или лист вообще разных животных
Поэтому программе важно знать под что выделять память, а именно тип объявляемой переменной.
+1
Vladimir
22 декабря 2019, 16:32
Это связано с наследованием и полиморфизмом. Можно делать так
Animal dog = new Dog()
Animal cat = new Cat();
Animal rat = new Rat();
а потом из всего этого создавать массив с типом Animal.
Eсли Dog, Cat, Rat унаследованы от Animal.
0
Stanislav Razumnik
22 декабря 2019, 11:49
Ну то есть не правила, а логика, для начала ты указываешь тип объекта Dog (который похож именем на класс Dog, то есть это объект класса Dog), далее присваиваешь ссылку на объект, поправьте если я не прав.
0
Мариам
22 декабря 2019, 07:58
это ТЕБЕ понятно что и так это дог)) А в программировании есть ПРАВИЛА. И согласно правилам сначало в строке пишут имя класса, потом имя обьекта который ты создаешь потом = и потом имя класса со скобочками () и ;
0