Alright, поэтому у меня есть абстрактный класс:Кастинг на абстрактный класс
public abstract class Animal {
public abstract String sound();
}
Таким образом, то у меня есть класс, который расширяет его:
public class Chicken extends Animal {
public String sound() {
return "Cockadoodledoo!";
}
}
Тогда у меня есть тестовый класс с основной метод:
public class Test {
Chicken a = new Chicken();
System.out.println((Animal)a).sound());
}
Выход "Cockadoodledoo!" Поэтому мой вопрос в том, почему, если я кастую в Animal, он все еще вызывает метод в Chicken? Разве он не видел бы как объект Животного? Это потому, что sound() является абстрактным, поэтому его нельзя назвать ... но тогда это не даст мне исключения?
Заранее спасибо.
он перегружен. вы должны ожидать этого. в этом случае вы не сможете называть «звук» в «Animal». – HuStmpHrrr