gpt4 book ai didi

java - (Java downcasting) 这个例子我做错了什么?

转载 作者:搜寻专家 更新时间:2023-10-31 19:53:05 26 4
gpt4 key购买 nike

我尝试以这种方式沮丧:

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)

但在应用程序示例中,Lern Java 的显示与我的完全相同。

最佳答案

嗯,a 不是 Cat 的实例。如果你想将它向下转型为 Cat,你需要实际创建一个 Cat(或某个扩展 Cat 的类的实例,类(class)):

Animal a = new Cat();

但是请注意,如果 Animal 声明了 makePee() 并且 Cat 覆盖了它,则向下转型是没有意义的。您只需调用 a.makePee(),就会使用 Cat 的实现(前提是您实际创建了一个 Cat,如上所述).

关于java - (Java downcasting) 这个例子我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com