我试图以这种方式向下倾斜:
public static void main(String[] args){
Animal a = new Animal();
((Cat)a).makePee();
}
Cat
扩展Animal
,两者都有相同的方法makePee()
。
如果我尝试运行它,编译器会显示一条错误消息:
线程中的异常" main" java.lang.ClassCastException:Animal无法强制转换为Cat 在Main.main(Main.java:6)
但是在App Lern的示例中,Java显示与我一样。
答案 0 :(得分:6)
好吧,a
不是Cat
的实例。如果你想将它向下转换为Cat
,你需要实际创建一个Cat
(或者某个扩展Cat
的类的实例):
Animal a = new Cat();
但请注意,如果Animal
声明makePee()
和Cat
覆盖它,那么向下转换是没有意义的。您可以致电a.makePee()
,并使用Cat
的实施方式(前提是您实际创建了Cat
,如上所述)。