子类继承父类后,代码块和构造方法的运行先后的顺序
2017-05-13 08:57
309 查看
代码如下:
/**
* 父类
*/
public class F {
// 父类的无参构造方法
public F() {
System.out.println("这是父类的构造方法!");
}
// 代码块
{
System.out.println("这是父类的代码块!");
}
// 静态代码块
static {
System.out.println("这是父类的静态代码块!");
}
}
/**
* 子类
*/
public class S extends F {
// 子类的无参构造方法
public S() {
System.out.println("这是子类的构造方法!");
}
// 子类的代码块
{
System.out.println("这是子类的代码块!");
}
// 子类的静态代码块
static {
System.out.println("这是子类的静态代码块!");
}
public static void main(String[] args) {
S s = new S();
}
}
输出:
这是父类的静态代码块!
这是子类的静态代码块!
这是父类的代码块!
这是父类的构造方法!
这是子类的代码块!
这是子类的构造方法!
由上面的代码可以说明:当子类继承父类时,输出时,会先去运行父类的静态代码块,然后回去运行子类的静态代码块,再运行父类的代码块、构造方法,接着才会去运行子类的代码块、构造方法。
/**
* 父类
*/
public class F {
// 父类的无参构造方法
public F() {
System.out.println("这是父类的构造方法!");
}
// 代码块
{
System.out.println("这是父类的代码块!");
}
// 静态代码块
static {
System.out.println("这是父类的静态代码块!");
}
}
/**
* 子类
*/
public class S extends F {
// 子类的无参构造方法
public S() {
System.out.println("这是子类的构造方法!");
}
// 子类的代码块
{
System.out.println("这是子类的代码块!");
}
// 子类的静态代码块
static {
System.out.println("这是子类的静态代码块!");
}
public static void main(String[] args) {
S s = new S();
}
}
输出:
这是父类的静态代码块!
这是子类的静态代码块!
这是父类的代码块!
这是父类的构造方法!
这是子类的代码块!
这是子类的构造方法!
由上面的代码可以说明:当子类继承父类时,输出时,会先去运行父类的静态代码块,然后回去运行子类的静态代码块,再运行父类的代码块、构造方法,接着才会去运行子类的代码块、构造方法。
相关文章推荐
- java中父类的静态代码块,非静态代码块,构造方法,子类的静态代码块,构造方法等先后执行顺序
- Java继承中父类子类构造方法、静态代码块、非静态代码块的执行顺序
- Java类的各种成员初始化顺序如:父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺序
- Java类的各种成员初始化顺序如:父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺序
- 继承中,static代码块,代码块,构造方法执行顺序问题
- JAVA中静态代码块、构造方法、Super()父类与子类之间执行顺序
- 静态块,普通代码块,构造方法,父类、子类的初始化顺序
- Java中静态代码块,非静态代码块,以及父类与子类的构造方法的之间调用顺序
- 【Java基础】继承中的代码块和构造方法的执行顺序探索
- java父类子类中静态块非静态块构造方法的执行顺序和继承
- Java子类继承父类,构造方法的执行顺序问题
- 【JAVA】探究JAVA父类子类静态代码块、静态变量、构造方法的执行顺序
- 父类子类静态代码块,构造方法的执行顺序
- Java中普通代码块,构造代码块,静态代码块区别及运行顺序(子类,父类中运行顺序)
- 父类子类构造方法、静态代码块、非静态代码块的执行顺序
- Java子类继承父类,静态代码块、普通代码块、构造代码块的执行顺序
- 子类继承父类(父类和子类里:块、静态块、构造和方法覆写)之间调用顺序
- 继承--抽象类--接口--子类构造方法代码执行顺序
- Java静态代码块、构造器、静态主方法以及继承后父类代码块的运行顺序
- 当子类继承父类,其子类和父类中静态代码块,构造代码块,无参构造之间的输出顺序