再来一道题目!蛮简单的.
10. 定义A,B如下:
class A {
int a=1;
double d=2.0;
void show( ) {
System.out.println( "Class A:a= "+a + " d= "+d);
}
}
class B extends A {
float a=3.0f;
String d= "Java program. ";
void show( ) {
super.show( );
System.out.println( "Class B:a= "+a + " d= "+d);
}
}
若在应用程序的main方法中定义类B的对象b:
A b=new B(); //这句话是什么意思????
b.show();
则输出的结果如何?
------解决方案-------------------- A b=new B();
这是子类的向上转型,A类 的引用 b,调用B类的构造函数生成B类对象。
子类向上转型后,其通过继承并覆写后的函数仍能被唤起,并能被准确识别及执行,即向上转型后的对象,其内有效的函数别调用时,能准确执行其自身未转型时的功能。
这个机制主要由java函数(非final函数)的“后期邦定”性质保障。