练习:?
class Demo
{
? void show(int a,int b,float c){}
}
下面答案哪个是show方法的重载形式:
A、void show(int a,float c,int b){}
B、int show(int a,int b,float c){}
C、int show(int a,float c,int b){return a;}?
D、int show(int a,float c){return a;}
正确答案:ACD
?
注意:
1、重载。同一个类中。Overload,即在一个类中定义两个或者多个同名方法。(原则:方法名相同,有不同的参数类型或者不同的参数个数,与方法返回值无关)
2、重写。子类中。重写也称为覆盖、或者覆写。Override。即子类中方法“重写”父类中的同名方法。
满足重写有一定条件:子类与父类中的方法完全一致,即返回值相同、方法名相同、参数列表相同。
?练习题:
父类中的代码如下:
class Demo
{
? ?int show(int a,int b){return 0;}
}
下面那些方法可以存在于Demo的子类中(C与D难度稍大)。
A、public int show(int a,int b){return 0;}
B、private int show(int a,int b){return 0;}
C、private int show(int a,long b){return 0;}
D、public short show(int a,int b){return 0;}?? //二义性,子类对象调用时无法区分两个show
E、static int show(int a,int b){return 0;}
?正确答案:AC
A、public int show(int a,int b){return 0;} //重写
B、private int show(int a,int b){return 0;}? //重写,权限比父类小
C、private int show(int a,long b){return 0;}? //不是重写,是子类独有的方法
D、public short show(int a,int b){return 0;}?? //不是重写,二义性,子类对象调用时无法区分两个show
E、static int show(int a,int b){return 0;}? //重写,静态只能重写静态
关键点:
- 子类方法“重写”父类方法时,子类方法权限一定要大于或者等于父类方法权限。即小权限无法“重写”大权限。?
- 静态方法只能重写静态方法,或被静态方法重写。实际中很少见这种情况。
|