Скажем, у меня определили два класса, Super
и Sub
и Sub
подкласс Super
:Каков тип ссылки, поддерживаемой ссылочной переменной суперкласса?
public class Super {}
public class Sub extends Super {}
Я знаю, что это законно, чтобы сделать следующее:
Super s = new Sub();
Мой вопрос, хотя , что компилятор считает ссылкой в s
? Считает ли он, что это просто ссылка типа Super
, или он знает, что это на самом деле ссылка типа Sub
. Я искал ответы на подобные вопросы, но не нашел ничего определенного. Спасибо!
Компилятор thinka, как супер только – Panther
Нет @Manishsakpal компилятор знает только о типе переменной, которая является супер. Не фактический объект – Panther
Да @panther Я знаю, что компилятор знает только тип переменной Super, но я забыл упомянуть, что во время выполнения это s ссылается на объект типа Sub. Извините моя ошибка. –