Предположим, у нас есть класс Dog и класс Animal.
Как понять работу этой строки?
Animal d = new Dog();
И в чем её различие с этой строкой?
Dog d = new Dog();
Предположим, у нас есть класс Dog и класс Animal.
Как понять работу этой строки?
Animal d = new Dog();
И в чем её различие с этой строкой?
Dog d = new Dog();
Дополню:
Animal d = new Dog();
Dog dogo = (Dog) d;
"Animal d = new Dog()" - переменной типа Animal присваивается значение нового объекта класса Dog. Обычно в таких примерах Dog наследует Animal. Это значит, что у всякого Dog есть все свойства Animal, и никаких ошибок при использовании d возникать не должно. Да, и это фундаментальный признак объектно-ориентированного программирования - полиморфизм.
"Dog d = new Dog()" - переменной типа Dog присваивается значение нового объекта класса Dog.
Различие в типе переменной.
Читайте любой учебник или документацию.
читай - полиморфизм...
тут ещё можно приписать оператор Instanceof и тд и тп...
если ты уже изучал коллекции!??
не задавался вопросом почему в основном пишут
List<?> list = new ArrayList<>();
обращаясь к интерфейсу?
можно ещё вверх на ступеньку по иерархии наследования подняться
наследования по интерфейсу!
Iterable<?> iterable = new ArrayList<>();
ну и самый вверх)
Object someThing = new ArrayList<>();
почитай одну книжку
Мэтт Вайсфельд "Объектно-ориентированное мышление"
там про ооп страниц 150, но, если вникнуть, всё поймёшь...