@Override注解可以帮助检查父类中是否有该方法,但不加@Override,子类也可以复写父类的方法,且可以使用父类的引用调用该方法。
class A {
public void sayInA(int p ){
System.out.println("In A:"+p);
}
public void sayInAA(int p ){
System.out.println("In A:"+p);
}
}
class B extends A{
public B(){
super();
System.out.println("say some thing");
}
public void sayInA(int p ){
System.out.println("In B:"+p);
}
}
public static void main(String[] args) {
A b = new B();
b.sayInA(5);
}
output:
In B:5
class B extends A{
public B(){
super();
System.out.println("say some thing");
}
public void sayInA(int p ){
System.out.println("In B:"+p);
super.sayInAA(p);
super.sayInAA(p);
}
}
另外,在子类中可以任意调用父类的方法,但在子类的构造方法中,如果要调用父类的构造方法,那必须放在首行,因为父类在构造方法要初始化,子类在构造方法中可能会用到父类初始化的变量。