1.解释
重载overload:发生在同一个类中,方法名相同,参数列表不一样,个数不同,顺序不同,与方法返回值和修饰符没有关系(也就是不可以不同?),发生在编译-->重载和方法返回值没有关系??
如果方法名和参数都是一样的,只依靠方法返回值的类型不同,或者方法返回值的不同,编译器无法区分该调用哪个方法的,所以不能只依靠方法返回值不同来实现方法的重载。
如果一个方法的参数不同了,也就是已经满足了重载的条件了,这个时候,方法返回值就可以不同了。
(仅是)方法的返回值不同不能实现重载,而已经满足重载条件的方法,其返回值可以不同。
重写override :发生在父子类中,子类重写父类的方法,方法名相同,参数列表也相同,返回值小于等于父类,抛出的异常范围小于等于父类、访问修饰符范围大于等于父类、如果父类方法访问修饰符为private,子类不可以重写
2.相关笔试题
(1)给定如下代码段:
1)class Person {
2)public void printValue(int t, int j) {}
3)public void printValue(int i){}
4)}
5) public class Teacher extends Person{
6) public void printValue(){}
7) public void printvalue(int i) {}
8) public static void main(String arg[]){
9) Person t = new Teacher();
10) t.printValue(10);
11)}}
第十行的语句将调用哪行代码?
A. on line 2
B.on line 3
C.on line 6
D.on line7
(2)将下列代码(ABCD)放入程序中标注的【代码】处将导致编译错误?
class A {
public float getNum(){return 3.0f;}
public class B extends A {
【代码】
}
}
A.public void getNum (double b){}
B.public void getNum(){}
C.public double getNum (float d){return 4.0d;}
D.public float getNum(){return 4.0f;}