overriding主要出現在如下兩種情況:
(1)對接口方法的實現,在接口中一般只是對方法進行了聲明,而我們在實現時,就需要實現接口聲明的所有方法。
(2)在繼承中也可能會出現子類覆蓋父類中的方法。
重寫要注意以下的幾點:
(1)覆蓋的方法的標誌必須要和被覆蓋的方法的標誌完全匹配,才能達到覆蓋的效果;(2)覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;
(3)覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;
(4)被覆蓋的方法不能爲private,否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋。
舉例如下:
class A {
public A(){
}
public void fa() {
System.out.println("CLASS A :Function fa Runing......");
}
public void fb() {
System.out.println("CLASS A :Function fb Runing......");
fa();
System.out.println("CLASS A :Function fb Stop......");
}
}
class B extends A {
public B(){
}
public void fa() { // 重寫 A類的 fa 方法
System.out.println("CLASS B :Function fa Runing......");
}
public void fb() { // 重寫 A類的 fb 方法
System.out.println("CLASS B :Function fb Runing......");
super.fb();
System.out.println("CLASS B :Function fb Stop......");
}
}