JAVA对象创建过程

class Animal{
  String name;
  Animal() {
    System.out.println("class Animal");
  }
  Animal(String name){
    this.name = name;
    System.out.println(name + " class Animal");
    printNumber();
  }

  public void printNumber(){

  }
}

 

class Fish extends Animal{
  Fish() {
    System.out.println("class Fish");
  }
}

class GoldFish extends Fish {
  GoldFish() {
    System.out.println("class GoldFish");
  }
}

class Cat {
  Cat(){
    System.out.println("class cat");
  }
}

class Rabbit {
  private static int number;
  private static Cat cat = new Cat();
  public Rabbit() {
    number++;
    System.out.println(number + "class rabbit");
  }
}

class Dog extends Animal{
  public int dogNumber;
  private GoldFish goldFish = new GoldFish();
  static Rabbit blackRabbit = new Rabbit();
  static Rabbit whiterabbit = new Rabbit();

  public Dog() {
    super("Tom");
    System.out.println("class Dog");
    dogNumber = 10;
    System.out.println("The dog's number is:" + dogNumber);
  }

  public void printNumber(){
    System.out.println("The dog's number is:" + dogNumber);
  }
}

public class TestInheritanceConstructor extends Animal {
  public static void main(String[] args){
    new Dog(); //Test the executive order of constructor
  }
}

结果顺序:

class cat
1class rabbit
2class rabbit
Tom class Animal     //先执行的构造方法
The dog's number is:0  //这里我有点疑问
class Animal        //后来又初始化的非静态的,在执行构造之后。
class Fish
class GoldFish
class Dog
The dog's number is:10

posted on 2017-04-21 15:40  老曹123  阅读(81)  评论(0)    收藏  举报

导航