Dog d = new Dog(); // there's a toString() overridding Object's
ArrayList container = new ArrayList();
container.add(d);
container.get(0).toString; // calls toString() of Dog, however the Object is not cast to Dog
Почему это называют Dog
«s toString()
, если тип времени выполнения является Object
? Я знаю, что каждый объект является подклассом Object
, но теперь мы работаем с суперклассом, не так ли?объекты, литье, Наследование
* Почему он вызывает функцию toString(), если тип выполнения является объектом? * - Поскольку тип не является 'Object'. Вы помещаете «Собака», вы получаете «Собака». – azurefrog
Думаю, вам нужно прочитать учебник по [Переопределение метода] (https://en.wikipedia.org/wiki/Method_overriding). – clcto
Тип выполнения: * не * 'Объект'. Тип * объявлен * - это «Объект», но тип времени выполнения объекта всегда «Собака». – JimmyB