面向物件11:方法重寫
阿新 • • 發佈:2020-08-15
static 在不同方法裡呼叫看看什麼情況??
靜態和非靜態,(有沒有static):
加了static有兩種呼叫的方法:
不加static有兩種呼叫的方法:
1.也就是說加了static,靜態方法,出現的早,直接用'類名加方法名呼叫'或'new一個物件來呼叫'
2.不加static,非靜態方法,需要'new一個物件來呼叫'
重寫子父類才有。子類從寫父類的方法
過載是引數名相當於本類的引數列表不同
加上static,不發生重寫,不看new在哪。不加static 看new 在哪,這個叫重寫
重寫:
-
重寫:需要有繼承關係,子類重寫父類方法!
1、方法名必須相同
2、引數列表必須相同
3、修飾符:範圍可以擴大但不能縮小:private<default<protected<public
4、丟擲的異常:範圍可以被縮小,但不能擴大 : ClassNotFoundException —>Exception(大) -
重寫:子類的方法和父類必須一致:方法體不同!
-
為什麼需要重寫:
1、父類的功能,子類不一定需要,或者不一定滿足
-
Alt + Insert : override;
程式碼示例:
Application3.java
package com.oop.Demo05; public class Application3 { //靜態的方法和非靜態的方法區別 //靜態方法://方法的呼叫只和左邊,定義的資料型別有關 //非靜態:重寫 public static void main(String[] args) { //父類的引用指向了子類 A a = new A(); a.test(); B b = new A(); //子類重寫了父類的方法 b.test(); } } 輸出: A==>test A==>test 程序已結束,退出程式碼 0
A.java
package com.oop.Demo05;
//繼承
public class A extends B {
//Override 重寫,alt+insert
@Override //註釋:有功能的解鎖
public void test() {
System.out.println("A==>test");
}
}
B.java
package com.oop.Demo05; //重寫都是方法的重寫,和屬性無關 public class B { public void test() { System.out.println("B==>test"); } }