子类继承父类,子类执行的时候,父子类的执行顺序?
Posted dxj1016
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了子类继承父类,子类执行的时候,父子类的执行顺序?相关的知识,希望对你有一定的参考价值。
java执行顺序:
- 加载时:静态的代码块、属性、方法都会在类加载时加载,它们的加载顺序按程序先后;实例化一个类时,会先加载普通属性>普通代码块>构造方法>普通方法
所以子类继承父类,子类执行的时候,父子类的执行顺序:
- 父类的static修饰的属性,代码块和方法(按照出现顺序执行)=》子类的static修饰的属性,代码块和方法=》当前主程序=》父类的普通属性=》父类的普通代码块=》父类的构造方法=》子类的普通属性=》子类的普通代码块=》子类的构造方法=》子类的普通方法
注意:父类的普通方法根据子类的调用的父类的普通方法的前后顺序来
代码测试:
父类
package test;
public class TestParent {
public int age;
public String name;
public String WorkNumber;
public TestParent() {
System.out.println("父类构造函数开始执行");
}
public TestParent(String bb) {
System.out.println("父类构造方法开始执行");
}
{
System.out.println("父类非静态代码块执行");
}
static {
System.out.println("父类静态代码块执行");
}
void run() {
System.out.println("父类一般方法执行");
}
}
子类:
package test;
public class TestChild extends TestParent {
public TestChild() {
super();
System.out.println("子类构造方法执行");
}
static {
System.out.println("子类静态代码块执行");
}
{
System.out.println("子类非静态代码块执行");
}
@Override
void run() {
System.out.println("子类一般方法执行");
super.run();
}
public static void main(String[] args) {
System.out.println("main方法执行");
TestChild ch = new TestChild();
ch.run();
}
}
执行结果:
父类静态代码块执行
子类静态代码块执行
main方法执行
父类非静态代码块执行
父类构造函数开始执行
子类非静态代码块执行
子类构造方法执行
子类一般方法执行
父类一般方法执行
以上是关于子类继承父类,子类执行的时候,父子类的执行顺序?的主要内容,如果未能解决你的问题,请参考以下文章