// 重寫我理解的全名是重寫父類的方法(父類的靜態方法也是可以被繼承的) 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("我是父類的普通方法"); } }
總結: 靜態方法根據對象的類類型決定調用父的還是子的;非靜態:重寫了都調用子類的,沒重寫都調用父類的