[Think in Java 笔记] 构造顺序

原创 2005年02月25日 16:56:00

下面是 << Think in Java >>中的一个例子,展现在继承关系地类(Class)中的构造顺序:
-------------------------------------------------------------------------------------------
// From 'Thinking in Java, 2nd ed.' by Bruce Eckel
// www.BruceEckel.com. See copyright notice in CopyRight.txt.
// Order of constructor calls.

class Meal {
  Meal() { System.out.println("Meal()"); }
}

class Bread {
  Bread() { System.out.println("Bread()"); }
}

class Cheese {
  Cheese() { System.out.println("Cheese()"); }
}

class Lettuce {
  Lettuce() { System.out.println("Lettuce()"); }
}

class Lunch extends Meal {
  Lunch() { System.out.println("Lunch()");}
}

class PortableLunch extends Lunch {
  PortableLunch() {
    System.out.println("PortableLunch()");
  }
}

class Sandwich extends PortableLunch {
  Bread b = new Bread();
  Cheese c = new Cheese();
  Lettuce l = new Lettuce();
  Sandwich() {
    System.out.println("Sandwich()");
  }
  public static void main(String[] args) {
    new Sandwich();
  }
}

运行结果:

-------------------------------------------------------------------------------------------
Meal()
Lunch()
PortableLunch()
Bread()
Cheese()
Lettuce()
Sandwich()

由此可知构造函数调用顺序如下:

1.反复第归调用base class的构造函数,确保根源Class最先被建构;

2.根据成员的声明顺序,初始化个成员;

3.调用derived class构造函数本体;

相关文章推荐

think in java之构造器的真正调用顺序

构造器是OOP的重要组成部分,很多人认为它很容易。只不过是new了一个对象而已。而think in java的作者却告诉我们,其实这并不容易。 先看下面这个例子。在你没看结果之前,你觉得你的答案是对...

Think in Java之构造器的真正调用顺序

构造器是OOP的重要组成部分,很多人认为它很容易。只不过是new了一个对象而已。而think in java的作者却告诉我们,其实这并不容易。 先看下面这个例子。在你没看结果之前,你觉得你的答案...
  • fngy123
  • fngy123
  • 2014年07月08日 18:40
  • 415

Think in Java之构造器的真正调用顺序

构造器是OOP的重要组成部分,很多人认为它很容易。只不过是new了一个对象而已。而think in java的作者却告诉我们,其实这并不容易。 先看下面这个例子。在你没看结果之前,你觉得你的答案是对...
  • smxueer
  • smxueer
  • 2015年08月24日 15:21
  • 233

Think in Java之构造器的真正调用顺序

构造器是OOP的重要组成部分,很多人认为它很容易。只不过是new了一个对象而已。而think in java的作者却告诉我们,其实这并不容易。先看下面这个例子。在你没看结果之前,你觉得你的答案是对的么...
  • novelly
  • novelly
  • 2014年03月08日 15:40
  • 388

Think in Java笔记(一)

1.1抽象过程 1.万物皆对象 2.程序是对象的集合,他们通过发送消息来告知彼此要做的。 3.每个对象都有自己的由其他对象所构成的存储。(组合composition) 4.每个对象都拥有其类型...

读书笔记 Think in Java 4th 第十一章 持有对象 List、Set、Queue和Map

容器(集合)的基本类型     基本类型是List、Set、Queue和Map。容器某些特性:Set对于每个值都只保存一个对象,Map 是允许将某些对象与其他一些对象关联起来的关联数组,Java容器类...

读书笔记----THINK IN JAVA

一年前的夏天的一个周六,忽然一个冲动跑到中关村图书大厦花了很多银子买了一本THINK IN JAVA。买回来之后就一直没怎么看过,我一直觉得这书太简单(一直没多看,只看了开头),提不起兴致,又没什么实...

think in java笔记:RTTI-Runtime type information

RTTI-Runtime type information To understand how RTTI works in Java, you must first know how type ...

Think In Java 笔记3 Reusing Classes

Reusing Classes 通过创建新的类,不是从头创建,可以用现有的类 用这个类但是不污染这个类的已存在的code达到这个目的的方法有两种 1. 组合(composition):创建这个...

Think in Java 读书笔记-第一章<对象导论>

第一章 对象导论 1.1 抽象过程 这一小节主要讲述了,面向过程与面向对象。涉及了两个很重要的概念:问题空间和解空间。 面向过程编程,就是建立解空间与问题空间的映射,就是如何在计算机里实现每一步...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Think in Java 笔记] 构造顺序
举报原因:
原因补充:

(最多只允许输入30个字)