public static void main(String[] args)
{
A a=new B();
B b=(B)a;
C c=new A();
D d=(D) c;
}
里面的B b=(B)a; 这个()是什么意思,申明对象是不是 类名 名称=new 类名()嘛,
public static void main(String[] args)
{
A a=new B();
B b=(B)a;
C c=new A();
D d=(D) c;
}
里面的B b=(B)a; 这个()是什么意思,申明对象是不是 类名 名称=new 类名()嘛,
A a=new B();——用A对象new出一个B的对象,可以判断出B继承于A,或者实现了A的接口。
B b=(B)a;——把封装了B类的a对象强制转换成B对象,JAVA多态的标准体现。
C c=new A();——用C对象new出一个A的对象,可以判断出A继承于C,并且根据第一行代码,判断出A不是接口,至少是一个类,也可能是抽象类。
D d=(D) c;——把封装了A类c对象强制转换成D对象,又一次用到了多态。
从上面几句代码可以判断出:D是最大的父类或者接口,C继承或实现了D,而A继承于C,B又继承于A。A和B可以被直接new出来,就说明他们至少是一个实体类。C可能是抽象类。
以上,本人拙见,有错请指出。
根据你的程序可以判断出:
C类继承了D类
A类继承了C类
B类继承了A类
有继承就有多态,所谓多态就是假如B类继承了A类,那么就有 A a=new B(); B b=new B();
当A a=new B(); 态 要回到B b=new B();态 时,必须强制转换。 b=(B)a;
里面的B b=(B)a; 是将a对象转化为B类型,为什么这样做,楼上的都说的很清楚了
强制类型转换