一、代码运行:
父类:
public class Animal {
static{
System.out.println("父类的静态方法");
}
{
System.out.println("执行父类的构造代码块");
}
public Animal(){
System.out.println("执行父类的构造方法");
}
public void A(){
System.out.println("执行父类的A方法");
}
}
子类:
public class Cat extends Animal{
static{
System.out.println("子类的静态方法");
}
{
System.out.println("执行子类的构造代码块");
}
public Cat(){
System.out.println("执行子类的构造方法");
}
@Override
public void A() {
System.out.println("执行子类的A方法");
}
public static void main(String[] args) {
Cat c = new Cat();
c.A();
}
}
运行结果和顺序:
父类的静态方法
子类的静态方法
执行`父类的构造代码块`
执行`父类的构造方法`
执行子类的构造代码块
执行子类的构造方法
执行子类的A方法
二、分析结果
可以看出几个重点:
- 1、静态方法(静态代码块)首先执行,先父类,后子类;
- 2、其次,执行构造代码块和构造方法,先父类,后子类;
- 3、最后,执行子类的方法