java程序的执行顺序

    xiaoxiao2021-03-25  101

    一、先执行内部静态对象的构造方法,如果有多个按定义的先后顺序执行;静态对象在构造的时候也是也先执行其内部的静态对象。

    二、再调用父类的构造方法(父类还有父类的话,从最开始的基类开始调用),如果没有明显指定调用父类自定义的构造方法,那么编译器会调用默认的父类构造方法super()。但是如果要调用父类自定义的构造方法,要在子类的构造方法中明确指定。

    三、按声明顺序将成员引用对象变量初始化。

    四、最后调用自身的构造方法。

    [java]  view plain  copy 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        }   }  
    转载请注明原文地址: https://ju.6miu.com/read-18869.html

    最新回复(0)