首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

再来一道题目!蛮简单的.解决方案

2012-01-20 
再来一道题目!蛮简单的.10.定义A,B如下:classA{inta1doubled2.0voidshow(){System.out.println( Clas

再来一道题目!蛮简单的.
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函数)的“后期邦定”性质保障。

热点排行