Пожалуйста, обратите внимание на следующие классы:Расширение класса/компилятора ошибки
public class Person {
public void whatAreYou(){
System.out.println("Person");
}
}
public class Student extends Person {
public void whatAreYou(){
System.out.println("Student");
}
}
Когда я пытаюсь позвонить,
Person p = new Student();
p.whatAreYou();
мой компилятор говорит мне:
error: cannot find symbol
Я предполагаю, что это означает, что метод whatAreYou() здесь не найден, но я этого не понимаю. Должно быть разрешено писать Person p = new Student()
, так как Student
является расширением Person
. Итак, когда мы вызываем p.whatAreYou()
во время запуска программы, java должен вызывать метод whatAreYou() в классе Student. Но компилятор уже не принимает ссылку здесь, как кажется, хотя оба метода имеют одно и то же имя в своих отдельных классах.
Может кто-нибудь объяснить мне, почему это так?
Показать полный код. –
Повторно скомпилируйте весь проект и, возможно, очистите кэш вашей среды IDE. – Tom
Нет полных кодов, это старый экзаменационный вопрос, и это все, что было дано нам. – Julian