如果我将对象分配给另一个不同类的对象会怎样?

时间:2018-09-19 10:14:06

标签: java object compiler-errors

这是我的代码:

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中不同类的另一个对象?

1 个答案:

答案 0 :(得分:1)

从技术上讲,可以将“基类”的变量分配为“子类”,但不能相反。也就是说,您可以拥有“ A a = new B()”,但不能拥有“ B b = new A()”。

还有一个直观的原因。基类通常是基本的东西,例如“ Person”,而子类则更具体,并有望提供更多的属性/功能,例如“老师”(=人其他教学能力)。您不能强迫一个普通人神奇地称自己为老师,这只会在您尝试激活任何教学功能的那一刻失败……

对于某些特定事物的功能不如基本能力低的情况(例如“ IncompetentPerson扩展Person”),我们可以开始进行哲学上的争论,但是Java继承通常并不旨在涵盖这种情况。