標籤:
代碼解析
子類
package com;/** * 子類 * @author huage * */public class Test extends Test1{ public static void main(String[] args) { new Test();//測試子類和父類重載關係和調用關係 } public Test() { System.out.println("test"); test("Test"); super.test("Test");//父類中的方法被子類重載,所以必須super才能調用的父類中的方法執行 } /** * 重載父類中的test方法 */ public void test(String name) { System.out.println("who:"+name+";test:test"); } /** * static方法不調用不會執行 */ public static void test1() { System.out.println("test static void "); }}
父類
package com;/** * 父類 * @author huage * */public class Test1 { public Test1() { System.out.println("1"); //被子類重寫後,執行個體化子類時調用的為子類中的方法 test("Test1"); this.test("Test1"); //test1(); } /** * 當執行個體化的對象為子類時,子類中有重寫此方法時,則在本來(父類)調用的為被子類重寫的方法,子類調用也為子類重寫的方法 * 如子類中要調用父類中的方法需要使用super來調用 * 自己本類中無法調用 */ public void test(String name) { System.out.println("who:"+name+";1:1"); } /** * static方法不會被重寫/覆蓋,但是在子類中可以有相同的方法,在調用中自己this調用的是自己的方法 */ public static void test1() { System.out.println("test1 static 111"); } /** * final方法不能被重寫/覆蓋,子類中不能有相同的方法(方法名,傳回型別,參數相同的情況) */ public final void test2() { System.out.println("test2 final 11111 "); }}
執行情況
1who:Test1;test:testwho:Test1;test:testtestwho:Test;test:testwho:Test;1:1
總結說明 :
子類繼承父類,當執行個體化子類時,根據jvm裝載順序(由低向上)的載入方式,執行時先執行父類中的執行個體化,和其中的內容,在執行子類中的內容
Java基礎-父類-子類執行順序