当前位置: 首页 > 知识库问答 >
问题:

为什么会出现这个错误?Java中类类型转换的规则?

帅雅逸
2023-03-14
class A {

}

class B extends A {

   public static void main(String args[]) {
      B b = new A();
   }

}

为什么这会引发编译时错误?为了抑制编译时错误,我们可以做bb=(B)newa() 但它也会通过ClassCastException


共有3个答案

江建明
2023-03-14

您不能将父类实例化为继承的类,因为并非所有继承的成员都有机会初始化。

然而,您可以做相反的事情:A=new B();因为A是父亲是B的推广,它的所有成员都有机会被初始化。

喻珂
2023-03-14

B=新的A()-

B=(B)新的A()-

在B B=(B)new A()的情况下,编译会成功,因为对于向下转换,编译器会检查类型是否相关(即继承),但在运行时,您试图用子类型引用(B)引用超级类型对象(A的对象),因此最终会出现异常。

刘海
2023-03-14

B是a,但a不是B。

只能将对象分配给其自身的实例或其超类,而不能分配给其子类。

 类似资料:
  • 为什么会引发主线程上的网络异常?its在异步任务上 } 编辑: 完整代码: logcat:

  • 问题内容: 我正在大学学习基础知识,并且希望对Eclipse中的以下错误有所帮助:“对于类型ShopCLI,未定义方法getCost()”& 这是我的代码 问题答案: 方法是在订单类中定义的,而不是在类中定义的。所以你的代码: 应该改为

  • 我收到这样的类型错误:- 甚至我正在使用jdk版本:-java版本"1.7.0_55"OpenJDK运行时环境(IcedTea 2.4.7)(7u55-2.4.7-1ubuntu1)OpenJDK 64位服务器VM(构建24.51-b03,混合模式) 请有人帮助我,我应该在我的项目中使用这样的组件。

  • 我正在尝试用Java制作一个与OpenGL(使用LWJGL 2)的窗口。当我尝试运行时,Eclipse BuiltInclassLoader出现了ClassNotFoundException错误。 我期望输出显示一个窗口,这是真正的输出: 线程“main”java.lang.noClassDeffounder中的异常错误:org/lwjgl/lwjglexception在enginetester.

  • 我正在尝试使用Minikube、Docker注册表和演示节点项目创建本地库伯内特斯部署。 我做的第一件事是安装Docker v1.12.3,然后是Minikube v0.12.2。 然后,我通过运行这个命令创建了一个Docker注册表容器(通过本教程,只运行下面的第一个命令) 接下来,我运行这个minikube命令来创建本地kubernetes集群: 我的项目结构如下所示: 我的Dockerfil

  • 错误:第 1 行的解析错误:函数搜索(sour ^ 期望“字符串”、“数字”、“空”、“真”、“假”、“{”、“[”,得到“未定义” 代码: