面试中经常考到方法的重写,这里需要遵循两同,两小,一大的原则。
两同:方法名和参数一样(包括参数类型和参数个数)
两小:抛出的异常比父类小,返回值比父类小。这里有一个误区:假如是基本数据类型或者他们的封装类型,是必须一样的。
class B {
public int b(){
System.out.println("b");
return 2;
}
}
public class A extends B{
@Override
public int b(){
System.out.println("a");
return 1;
}
public static void main(String[] args){
B a=new A();
a.b();
}
}
但如果是对象,子类的返回值可以是父类的返回值的子类。
class B {
public B b(){
System.out.println("b");
return new B();
}
}
public class A extends B{
@Override
public A b(){
System.out.println("a");
return new A();
}
public static void main(String[] args){
B a=new A();
a.b();
}
}
一大:访问符比父类要大。public>private