父类:
package com.stdent;
public class Class {
//静态代码块
static {
System.out.println("父类静态代码块");
}
//非静态代码块
{
System.out.println("父类非静态代码块");
}
/**
* 无参构造方法
*/
public Class() {
System.out.println("父类无参构造方法");
}
/**
* 有参构造方法
*/
public Class(int a) {
System.out.println("父类有参构造方法");
}
/**
* 一般静态方法
*/
public static void normalStaticMethod(){
System.out.println("父类一般静态方法");
}
/**
* 一般非静态方法
*/
public void normalMethod(){
System.out.println("父类一般非静态方法");
}
}
子类:
package com.stdent;
public class School extends Class{
//静态代码块
static {
System.out.println("子类静态代码块");
}
//非静态代码块
{
System.out.println("子类非静态代码块");
}
/**
* 无参构造方法
*/
public School() {
System.out.println("子类无参构造方法");
}
/**
* 有参构造方法
*/
public School(int b) {
System.out.println("子类有参构造方法");
}
/**
* 一般静态方法
*/
public static void normalStaticMethod(){
System.out.println("子类一般静态方法");
}
/**
* 一般非静态方法
*/
@Override
public void normalMethod(){
System.out.println("子类一般非静态方法");
}
}
mian函数:
package com.stdent;
public class Student {
public static void main(String[] args) {
School m = new School();
}
}
运行结果:
运行顺序:父类静态代码块->子类静态代码块->父类非静态代码块->父类无参构造方法->子类非 静态代码块->子类无参构造方法
具体原因可以看我另一篇文章:
C++子类为什么先死后生子类为什么先死后生_简单l的博客-CSDN博客