方法重寫
目錄
- 方法重寫
- 概念
- 方法重寫規則
- 例項
- 方法過載和重寫的區別
概念
方法的重寫或方法的覆蓋(overriding)
-
子類根據需求對從父類繼承的方法進行重新編寫
-
重寫時,可以用super.方法的方式來保留父類的方法
-
構造方法不能被重寫
方法重寫規則
重寫方法和被重寫方法必須具有相同的方法名
-
重寫方法和被重寫方法必須具有相同的引數列表
-
重寫方法的返回值型別必須和被重寫方法的返回值型別相同或者是其子類
-
重寫方法不能縮小被重寫方法的訪問許可權。
例項
A類:
public class A extends B{
@Override //重寫
public void test() {
super.test(); // 預設呼叫父類的方法
System.out.println("222");
}
}
B類:
public class B {
public void test(){
System.out.println("B>=test()");
}
}
main方法:
A a = new A();
a.test();
//父類的引用指向了子類。
B b =new A(); //子類重寫了父類的方法
b.test();
//輸出結果為B>=test() 222 B>=test() 222
方法過載和重寫的區別
區別 | 方法重寫 | 方法過載 |
---|---|---|
方法關係 | 描述的是父類和子類的方法關係 | 描述的是同一個類中多個同名方法的方法關係 |
Override 關鍵字 | 需要使用 @Override 關鍵字修飾 | 不需要 |
引數型別和引數個數 | 不能修改 | 必須修改 |
返回型別 | 只能變小或相同,不能變大 | 可修改 |
丟擲異常 | 只能變小或刪除,不能丟擲新的或者更大的異常 | 可修改 |
許可權控制符 | 只能變大,不能變小 | 可修改 |