1.靜態與非靜態方法在繼承中的應用 (1)靜態方法 (2)非靜態方法 當把A和B類的test方法的static去掉之後就會出現下圖標註的圈,這就表示是重寫。 快速生成重寫方法的快捷鍵:control + enter 或 alt + insert會出現如下圖所示: 下圖當進行方法的重寫之後走的都是A類 ...
1.靜態與非靜態方法在繼承中的應用
(1)靜態方法
(2)非靜態方法
當把A和B類的test方法的static去掉之後就會出現下圖標註的圈,這就表示是重寫。
快速生成重寫方法的快捷鍵:control + enter 或 alt + insert會出現如下圖所示:
下圖當進行方法的重寫之後走的都是A類的test方法,也就是當子類重寫了父類的方法後就會都走子類的方法。
2.重寫註意事項
(1)需要有繼承關係,而且是子類重寫父類的方法與父類的屬性無關。 (2)在子類中重寫父類的方法時兩個方法名必須相同,參數列表也必須相同。 (3)子類的修飾符:範圍可以擴大但不能縮小:public > protected > default > private 比如父類的修飾符為default繼承到子類的時候可以寫成public,反之則不行。註:若父類是private則在子類中不能擴大。 (4)拋出的異常:範圍可以被縮小但不能被擴大 (5)重寫時子類的方法必須與父類相同,方法體不同3.重寫的目的
(1)父類的功能子類不一定需要或不一定滿足點擊查看代碼
package com.Tang.oop.demo05;
public class Application {
public static void main(String[] args) {
//對於具有繼承關係的類的靜態方法的調用
// 只和左邊定義的數據類型有關
A a = new A();
a.test();
//父類的引用指向子類
B b = new A();//子類重寫了父類的方法
b.test();
}
package com.Tang.oop.demo05;
public class A extends B{
//Override 意思就是重寫
@Override//註解:有功能的註釋
public void test() {
System.out.println("A=>test()");
}
}
package com.Tang.oop.demo05;
//重寫都是方法與屬性無關
public class B {
public void test(){
System.out.println("B=>test()");
}
}