@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 узнаёт точный тип объекта и работает уже с ним позволяя вызывать при этом только методы прописанные в типе(классе) ссылки?
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы