[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构造函数本体;

读第一遍Thinking in java的笔记

第一章1.Java一切都是对象,但操纵的标识符是对象的一个“引用”。简单的说,引用代表这个对象内存地址。 如:String s;实际上,我们并没有创建一个对象,我们只是创建了一个引用,它不指向任何...
  • u011253016
  • u011253016
  • 2016年07月18日 18:22
  • 1770

Java对象的构造顺序

对象的初始化顺序:(1)类加载之后,按从上到下(从父类到子类)执行被static修饰的语句(static字段和static语句块); (2.0)main开始(2)基类的成员对象构造函数或构造块(构造...
  • hhfeifeige
  • hhfeifeige
  • 2014年10月14日 11:08
  • 455

Thinking in Java阅读笔记(一)

第一章:对象导论
  • u012031857
  • u012031857
  • 2014年10月31日 17:10
  • 428

java类构造对象的构造顺序

我们先来看一个实例class example { private privateitem i=new privateitem(); static staticitem j=new st...
  • u014316462
  • u014316462
  • 2015年10月22日 20:58
  • 465

Think in Java 读书笔记(二)(浓缩出精华_(:з)∠)_)

ok,继续接着之前的写~~~中间放上几张P站大神的画作和一首歌曲,请慢慢欣赏~(侵删)第10章1、可以将一个类的定义放在另一个类的定义的内部,这就是内部类。2、如果想从外部类的非静态方法之外的任意位置...
  • breavo_raw
  • breavo_raw
  • 2017年07月11日 09:42
  • 212

Think In Java第四版读书笔记

02-一切都是对象   将一切都“看作”对象,操纵的标识符实际是指向一个对象的“句柄”。 可将这一情形想象成用遥控板(句柄)操纵电视机(对象)。   String s;//这里创建的只是句柄,并不是对...
  • b2222505
  • b2222505
  • 2017年04月16日 21:05
  • 2062

我为什么把think in java 读了10遍

我在想写这篇博文之前,就曾经对我媳妇(她是做web前端的)讲,我把think in java看了几次几次,媳妇那时就用很羡慕和莫名的眼神看着我说,你真有毅力,我当时就蒙了,我以为她会说,你现在基础一定...
  • qiao_198911
  • qiao_198911
  • 2014年07月24日 11:57
  • 2172

《Thinking in Java》读书笔记(不断更新中)

概述春节在家乡,家里的电脑都是我上大学时淘汰的,要么运行不起来AS,要么连接不上手机,要么编译不了程序,这Android是写不了了。 记得前几天写插件的时候,用过Intellij IDEA,感觉很流...
  • zxt0601
  • zxt0601
  • 2017年01月31日 11:29
  • 1016

品味Think in C++ (一)

 像任何人类语言一样,C++提供了一种表达思想的方法。如果这种表达方法式成功的,那么就当问题变的更大和更复杂时,该方法将会明显的表现出比其它方法更容易和更灵活的优点。           ――Bruc...
  • imwkj
  • imwkj
  • 2005年06月25日 21:21
  • 1409

Think in java 第一章 总结随笔

1.1抽象过程 人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。 Smalltalk(java所基于的语言之一)的五个基本特性 1)万物皆是对象 2) 程序是对象的集合,它们通过发送消息来告...
  • The_flying_pig
  • The_flying_pig
  • 2017年05月23日 20:18
  • 525
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Think in Java 笔记] 构造顺序
举报原因:
原因补充:

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