我试着用这种方式向下倾斜:
public static void main(String[] args){
Animal a = new Animal();
((Cat)a).makePee();
}
Cat扩展了Animal,两者都有相同的方法makePee().
如果我尝试运行它,编译器会显示一条错误消息:
Exception in thread “main” java.lang.ClassCastException: Animal cannot be cast to Cat
at Main.main(Main.java:6)
但是在App Lern的示例中,Java显示与我一样.
最佳答案:
好吧,一个不是猫的实例.如果你想将它转发给Cat,你需要实际创建一个Cat(或者某个扩展Cat的类的实例,当然):
Animal a = new Cat();
但请注意,如果Animal声明makePee()并且Cat覆盖它,则向下转换是没有意义的.您可以只调用a.makePee(),然后使用Cat的实现(前提是您实际创建了Cat,如上所述).