继承

 

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加载顺序是:加载类的父类->父类的静态方法或者静态属性->加载子类->子类的静态方法或者属性->父类的非静态方法或者属性->父类构造方法(产生实例)->子类的非静态方法或属性->子类构造方法(产生实例)

posted @ 2013-07-15 15:20  holyant888  阅读(51)  评论(0)    收藏  举报