Задать вопрос
@LittleFl0wer
Java, Linux, SQL, Docker

Поля подкласса при полиморфизме?

Почему при полиморфизме видны переменные подкласса которых нет в суперклассе?
class Greeting{
    protected void sayHello(){
        System.out.println("hello");
    }
}

class GreetingByName extends Greeting{
    String name = "Vasya";
    @Override
    protected void sayHello() {
        System.out.println("hello " + name);
    }
}
Greeting greeting = new GreetingByName();
greeting.sayHello();


После вызова получится hello vasya, но как видна переменная name(vasya) если её нет в классе который является типом для ссылки? Во время выполнения jvm узнаёт точный тип объекта и работает уже с ним позволяя вызывать при этом только методы прописанные в типе(классе) ссылки?
  • Вопрос задан
  • 161 просмотр
Подписаться 2 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Java-разработчик с нуля
    12 месяцев
    Далее
  • Skillfactory
    Профессия Java-разработчик
    14 месяцев
    Далее
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы