代码解析
子类
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 "); } }
执行情况
1
who:Test1;test:test
who:Test1;test:test
test
who:Test;test:test
who:Test;1:1
总结说明 :
子类继承父类,当实例化子类时,根据jvm装载顺序(由低向上)的加载方式,执行时先执行父类中的实例化,和其中的内容,在执行子类中的内容