• 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)调用导出类构造器的主体。

  • 相关阅读:
    centos6 LVS-DR模式---分析
    centos6.6 安装 LXC
    Amoeba-mysql读写分离实战
    keepalived +mysql 实战
    nginx添加sticky模块-cookie保持会话
    haproxy转发真实IP给web
    Mysql-如何正确的使用索引以及索引的原理
    Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)
    Mysql-常用数据的基本操作和基本形式
    Mysql-多表连接的操作和用法
  • 原文地址:https://www.cnblogs.com/acode/p/5315262.html
Copyright © 2020-2023  润新知