重寫的理解

// 重寫我理解的全名是重寫父類的方法(父類的靜態方法也是可以被繼承的)
public class OOP {
    public static void main(String[] args) {
        Student3 stu = new Student3();
        // 父類指向子類對象(其實就是子類的new類型是父類)
        Personer stu2 = new Student3();
        // 靜態方法
        stu.read(); // 我要重寫父類 ====> 子類重寫的靜態方法 (當子類沒有重寫父類的靜態方法時,就會去調用父類的靜態方法)
        stu2.read(); // 我在讀  =====> 父類的靜態方法
        // 非靜態方法時繼承
        stu.fn();  // 我是子類的普通方法 =====> 子類重寫的方法
        stu2.fn();  // 我是子類的普通方法 =====> 子類重寫的方法
    }
}
// Personer的子類Student3 
class Student3 extends Personer{ 
    // 如果父類待重寫的方法是靜態的,那麼子類同名必須爲靜態的
    public static void read(){
        System.out.println("我要重寫父類");
    }
    public void fn(){
        System.out.println("我是子類的普通方法");
    }
}
// Personer類
class Personer{
    String name;

    public Personer() {
        System.out.println("我調用了父類的構造函數嗎");
    }
    public static void read(){
        System.out.println("我在讀");
    }
    public void fn(){
        System.out.println("我是父類的普通方法");
    }
}

 總結: 靜態方法根據對象的類類型決定調用父的還是子的;非靜態:重寫了都調用子類的,沒重寫都調用父類的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章