1. 程式人生 > 實用技巧 >面向物件11:方法重寫

面向物件11:方法重寫

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");
    }
}