1、父类的静态代码块
2、子类的静态代码快
3、父类非静态代码块和父类的实例变量按照其在代码中的先后顺序来初始化
4、父类构造器
5、子类非静态代码块和父类的实例变量按照其在代码中的先后顺序来初始化
6、子类构造器
7、父类Animal.java,代码如下:
package com.tiger.initi;
/**
* 父类
* 父类的静态初始化块-->子类的静态初始化快-->普通代码块-->父类构造器-->普通代码块-->子类构造器
* @author Administrator
*
*/
public class Animal {
private static int age;
//静态代码块
static {
System.out.println("父类静态代码块");
age = 10;
}
//代码块
{
System.out.println("在构造器前--父类普通代码块");
age = 20;
}
//父类静态方法
public static void eat(){
age = 123;
System.out.println("父类静态方法");
}
//父类有参构造器
public Animal(int age) {
System.out.println("父类有参构造器");
this.age = age;
}
//父类无参构造器
public Animal() {
System.out.println("父类无参构造器");
}
{
System.out.println("在构造器后--父类普通代码块");
age = 20;
}
}
8、子类Cat.java,代码如下:
package com.tiger.initi;
/**
* 1、父类的静态初始化块
* 2、子类的静态初始化快
* 3、普通代码块
* 4、父类构造器
* 5、普通代码块
* 6、子类构造器
* @author Administrator
*
*/
public class Cat extends Animal{
private static int age;
//子类静态代码块
static {
System.out.println("子类静态代码块");
age = 10;
}
//在构造器前--子类普通代码块
{
System.out.println("在构造器前--子类普通代码块");
age = 20;
}
//子类静态方法
public static void eat(){
age = 123;
System.out.println("子类静态方法");
}
//子类有参构造器
public Cat(int age) {
super(age);
this.age = age;
System.out.println("子类有参构造器");
}
//子类无参构造器
public Cat() {
System.out.println("子类无参构造器");
}
//在构造器后--子类普通代码块
{
System.out.println("在构造器后--子类普通代码块");
age = 20;
}
}
9、测试类InitialTest.java:
package com.tiger.initi;
/**
* 测试类
* 父类的静态初始化块-->子类的静态初始化快-->普通代码块-->父类构造器-->普通代码块-->子类构造器
* @author tiger
*
*/
public class InitiTest {
public static void main(String[] args) {
new Cat(12);
}
}
运行结果如下:
父类静态代码块
子类静态代码块
在构造器前--父类普通代码块
在构造器后--父类普通代码块
父类有参构造器
在构造器前--子类普通代码块
在构造器后--子类普通代码块
子类有参构造器