JavaRush /Java блог /Архив info.javarush /Pet cat = new Cat() - какие методы может использовать пер...
vtimk
17 уровень

Pet cat = new Cat() - какие методы может использовать переменная "cat"?

Статья из группы Архив info.javarush
Уважаемые Java'рашевцы, допустим есть код, в котором переопределяется метод в наследуемом классе: class Pet { String name; String age; String getString() { return "Домашнее животное"; } } class Cat extends Pet { String getString() { return "Кот Рыжик"; } } public static void main(String[] args) { Pet cat = new Cat(); cat.getString(); } скажите пожалуйста, какой вариант метода getString() будет вызван для переменной cat? В лекциях прочитал, что можно вызывать методы объекта, только если они присутствуют в классе, который использовался в качестве типа ссылки на объект, не смотря на фактический тип объекта. Значит-ли это, что в данном случае будет вызван метод из класса Pet или же в случае переопределения метода вызывается метод из класса объекта? Спасибо.
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
dimaMJ Уровень 25
15 февраля 2015
В данном случае вызовется переопределенный метод в классе Cat.
То что вы написали
Pet cat = new Cat();

означает, что с помощью переменной cat, можно будет вызвать все методы определенные в классе Pet, то есть личные методы класса Cat не будут видимы. Если же класс Cat переопределяет методы из класса родителя, то будет вызван переопределенный метод.
Если же допустим эти два метода будут статическими, то будет вызван метод определенный ни в обьекте, а в типе переменной.