您的位置:首页 > 编程语言 > Java开发

Java基础-父类-子类执行顺序

2015-05-09 20:41 211 查看
代码解析

子类

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装载顺序(由低向上)的加载方式,执行时先执行父类中的实例化,和其中的内容,在执行子类中的内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: