这是我的代码:
class A
{
int x=2,y=3;
}
class B extends A
{
//Blank
}
public class Test
{
public static void main(String args[])
{
A a=new A();
B b;
b=a;
System.out.println(b.x);
System.out.println(b.y);
}
}
当我尝试运行此代码时,显示“不兼容的类型:A不能转换为B”错误。
当我尝试将“ a”类型转换为“ B”时,也会发生ClassCastException。
有什么办法可以将对象分配给java中不同类的另一个对象?
答案 0 :(得分:1)
从技术上讲,可以将“基类”的变量分配为“子类”,但不能相反。也就是说,您可以拥有“ A a = new B()”,但不能拥有“ B b = new A()”。
还有一个直观的原因。基类通常是基本的东西,例如“ Person”,而子类则更具体,并有望提供更多的属性/功能,例如“老师”(=人加其他教学能力)。您不能强迫一个普通人神奇地称自己为老师,这只会在您尝试激活任何教学功能的那一刻失败……
对于某些特定事物的功能不如基本能力低的情况(例如“ IncompetentPerson扩展Person”),我们可以开始进行哲学上的争论,但是Java继承通常并不旨在涵盖这种情况。