• Java组合与继承生成的类中构造函数的执行顺序


    【程序实例】

     1 import java.util.*;
     2 
     3 class Meal{
     4     Meal() {
     5         System.out.println("Meal Constructor");
     6     }
     7 }
     8 
     9 class Bread{
    10     Bread(){
    11         System.out.println("Bread Constructor");
    12     }
    13 }
    14 
    15 class  Cheese{
    16     Cheese(){
    17         System.out.println("Cheese Constructor");
    18     }
    19 }
    20 
    21 class Lettuce{
    22     Lettuce(){
    23         System.out.println("Lettuce Constructor");
    24     }
    25 }
    26 
    27 class Lunch extends Meal{
    28     Lunch(){
    29         System.out.println("Lunch Constructor");
    30     }
    31 }
    32 
    33 class PortableLunch extends Lunch{
    34     PortableLunch(){
    35         System.out.println("PortableLunch Constructor");
    36     }
    37 }
    38 
    39 public class ZuheJichengOrder extends PortableLunch{
    40     private Bread b=new Bread();
    41     private Cheese c=new Cheese();
    42     private Lettuce l=new Lettuce();
    43     public ZuheJichengOrder(){
    44         System.out.println("ZuheJichengOrder Constructor");
    45     }
    46     
    47     public static void main(String[] args){
    48         new ZuheJichengOrder();
    49     }
    50 }

    【运行结果】

    1 Meal Constructor
    2 Lunch Constructor
    3 PortableLunch Constructor
    4 Bread Constructor
    5 Cheese Constructor
    6 Lettuce Constructor
    7 ZuheJichengOrder Constructor


    【结果分析】

    从程序的执行结果可以看出,构造器的执行顺序是从根部的基类开始,一直到距离本类最近的父类,然后对本类中的数据成员进行初始化,最后执行本类的构造器的函数体。

    总结:

    复杂对象调用构造器的顺序为:

      (1)调用基类构造器。这个步骤会不断反复递归执行下去,首先是构造这中层次结构的根,然后是下一层导出类,等等,直到最底层的导出类;

      (2)按照声明顺序调用成员的初始化方法;

      (3)调用导出类构造器的主体。

  • 相关阅读:
    rsyslog
    java实现黄金分割数
    java实现黄金分割数
    java实现黄金分割数
    java实现黄金分割数
    java实现黄金分割数
    java实现低碳生活大奖赛
    java实现低碳生活大奖赛
    java实现低碳生活大奖赛
    java实现低碳生活大奖赛
  • 原文地址:https://www.cnblogs.com/acode/p/5315262.html
Copyright © 2020-2023  润新知