继承
1 public class Animal { 2 public Animal(){ 3 System.out.println("animal"); 4 } 5 }
Animal.java
1 public class Cat extends Animal{ 2 static Tiger t = new Tiger(); 3 Tiger t2 = new Tiger(); 4 public Cat() { 5 //super(); 6 System.out.println("Cat"); 7 } 8 9 }
Cat.java
1 public class Tiger { 2 3 public Tiger() { 4 System.out.println("tiger"); 5 } 6 7 }
Tiger.java
public class Test { /** * @param args */ public static void main(String[] args) { Cat cat = new Cat(); } }
Test.java
执行Test.java 输出什么呢?
初始化过程:Cat cat = new Cat();
1、由上到下初始化父类(从最顶端向下)静态属性和方法;
2、由上到下初始化自身静态方法和属性;
3、初始化父类(从最顶端向下)属性和方法;
4、由上到下初始化自身属性和方法;
5、初始化父类(从最顶端向下)构造方法;
6、由上到下初始化自身构造方法;
JVM加载顺序是:加载类的父类->父类的静态方法或者静态属性->加载子类->子类的静态方法或者属性->父类的非静态方法或者属性->父类构造方法(产生实例)->子类的非静态方法或属性->子类构造方法(产生实例)
浙公网安备 33010602011771号