日期:2014-05-20  浏览次数:20655 次

一个阶段测试题
7、读以下程序:
1)class BaseClass{ 
 2) private float x=1.0f; 
 3) private float getVar(){return x;} 
  4)} 
  5)class SubClass extends BaseClass{ 
 6) private float x=2.0f; 
  7) //insert code 
  8)} 
  以下哪些重写了getVar():( )
  A、float getVar(){ 
  B、publifloat getVar(){
  C、publidouble getVar(){
  D、protectedfloat getVar(){

答案说是 ABD 我怎么不解啊

------解决方案--------------------
重写是子类的方法覆盖父类的方法,要求方法名和参数、返回值类型 都相同 ,重写的封装等级必须大于父类等级

------解决方案--------------------
探讨
7、读以下程序:
1)class BaseClass{
2) private float x=1.0f;
3) private float getVar(){return x;}
4)}
5)class SubClass extends BaseClass{
6) private float x=2.0f;
7) //insert cod……

------解决方案--------------------
重写的主要特点是:
1)方法名必须与被重写方法一致
2)方法参数列表必须与被重写方法一致
3)若是基本数据类型,则必须要相同;若是引用类型,则重写的方法的返回值类型或者一样,或者是被重写方法的返回值类型的子类型
4)重写的方法不能降低原方法的"可见度"
5)不能抛出新的异常或者"更宽的"异常
6)被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖

答案费解

------解决方案--------------------
探讨

引用:
7、读以下程序:
1)class BaseClass{
2) private float x=1.0f;
3) private float getVar(){return x;}
4)}
5)class SubClass extends BaseClass{
6) private float x=2.0f;
7) //insert co……