课本例子,看不说明:
A a = new B(); //A为基类,B为A的派生类。可以这样实例化类吗?
A a1 = new A(); //课本上说这是错的,可改成A a1 = null;
B b1 = (B)a;
B b2 = (B)a1;
请另取例解释。
參考答案:基类(abstract)是不可实例化的,其派生类及其内成员若没有标记为抽象(abstract)的才可被实例化。
A a1 = null;没有错,但是多余,因为任何对引用型变量的声明,默认初始化为null(空引用)。写成“A a1;”就够了。
B b2 = (B)a1;不正确,虽然派生类可隐式转化成其基类,但是基类不可转化成其派生类,因为不能保证基类实现派生类的全部功能。