`
Copperfield
  • 浏览: 261129 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
C407adc3-512e-3a03-a056-ce4607c3a3c0
java并发编程陷阱
浏览量:25214
社区版块
存档分类

thinking in java-构造器内部的多态行为

 
阅读更多
class Glyph {
	void draw() { print("Glyph.draw()"); }
	Glyph() {
		print("Glyph() before draw()");
		draw();
		print("Glyph() after draw()"); 
	}
}

class RoundGlyph extends Glyph {
	private int radius = 1;
	RoundGlyph(int r) {
		radius = r;
		print("RoundGlyph.RoundGlyph(), radius = " + radius);
	}
	void draw() {
		print("RoundGlyph.draw(), radius = " + radius);
	}
}

class RectangularGlyph extends Glyph {
	private int length = 2;
	private int width = 4;
	RectangularGlyph(int l, int w) {
		length = l;
		width = w;
		print("RectangularGlyph.RectangularGlyph(), length = " 
			+ length + ", width = " + width);
	}
	void draw() {
		print("RectangularGlyph.draw(), length = " + length 
			+ ", width = " + width);
	}
}


public class PolyConstructors15 {
	public static void main(String[] args) {
		new RoundGlyph(5);
		new RectangularGlyph(3, 6);
	}
}

 output:

Glyph() before draw()
RoundGlyph.draw(), radius = 0
Glyph() after draw()
RoundGlyph.RoundGlyph(), radius = 5
Glyph() before draw()
RectangularGlyph.draw(), length = 0, width = 0
Glyph() after draw()
RectangularGlyph.RectangularGlyph(), length = 3, width = 6

 

注意初始化顺序:

1、在任何事情发生之前,将分配给对象的存储空间初始化成二进制的0。

2、调用父类构造器,调用被子类覆盖的方法,由于子类构造器尚未执行,此时子类中的radius仍然是0.

3、按照声明的顺序调用成员的初始化方法。

4、调用子类的构造器。

分享到:
评论

相关推荐

    Thinking in java4(中文高清版)-java的'圣经'

    研讨课 Hands-on Java研讨课CD Thinking in Objects研讨课 Thinking in Enterprise Java Thinking in Patterns(with Java) Thinking in Patterns研讨课 设计咨询与复审 附录B 资源 软件 编辑器与IDE 书籍 分析与设计...

    Thinking in Java 习题答案

    《Thinking in Java》是Bruce Eckel的经典编程教材,它深入浅出地介绍了Java语言的核心概念和技术。这本书以其详尽的解释、丰富的示例和实践性强的习题深受程序员喜爱。"Thinking in Java 习题答案"是配套的解答集,...

    Thinking in java第三版pdf及习题答案

    - **构造器与析构函数**:对象创建和销毁的过程,了解构造器的作用和用法。 - **异常处理**:异常的分类,try-catch-finally语句块,自定义异常。 - **集合框架**:ArrayList、LinkedList、HashSet、HashMap等容器...

    thinking in java

    ### 《Thinking in Java》核心知识点解析 #### 一、书籍概述 《Thinking in Java》是一本由布鲁斯·埃克尔(Bruce Eckel)编写的经典Java编程指南。本书首次出版于1998年,并迅速成为学习Java语言的最佳教程之一。...

    Thinking in Java Fourth Edition

    - **构造器**:探讨构造器的作用及如何自定义构造器。 - **初始化块**:介绍静态初始化块和实例初始化块的区别及应用场景。 - **对象清理**:讨论Java中对象生命周期的管理,包括垃圾回收机制的基本原理。 #### 第5...

    Thinking in java源代码

    《Thinking in Java》是 Bruce Eckel 编著的一本经典的Java编程教材,它深入浅出地阐述了Java语言的核心概念和编程技术。翁凯教授在浙江大学的Java语言课程中,结合这本书的内容进行了讲解,并提供了配套的PPT和源...

    Thinking in Java, 2nd edition

    《Thinking in Java》是Bruce Eckel的经典之作,第二版对初学者和经验丰富的开发者都具有极高的价值。这本书深入浅出地介绍了Java编程语言的核心概念和技术,帮助读者建立起扎实的面向对象编程思想。 1. 面向对象...

    Thinking in java\TIJ4-solutions-demo

    ### Thinking in Java – 第四版解决方案指南知识点概览 #### 一、背景介绍 《Thinking in Java》(TiJ)是一本经典的Java编程语言学习教材,由Bruce Eckel撰写,首次出版于1998年,并随着Java的发展不断更新版本。...

    Thinking in Java 3th Edition.zip

    《Thinking in Java》是Bruce Eckel的经典编程教材,第三版主要涵盖了Java编程语言的核心概念和技术。这本书深入浅出地介绍了面向对象编程的思想,是初学者和有经验的程序员理解Java的宝贵资源。以下是对该书内容的...

    Thinking in Java第三版中文版

    《Thinking in Java》是Bruce Eckel的经典之作,第三版中文版为广大的中文读者提供了学习Java编程语言的宝贵资源。这本书深入浅出地讲解了Java的核心概念和技术,旨在帮助读者理解面向对象编程思想并掌握Java编程...

    Thinking in Java 中文版英文版

    《Thinking in Java》是Bruce Eckel的经典之作,它是一本深度探索Java编程语言的书籍,深受全球程序员喜爱。这本书不仅适合初学者,也适合有一定经验的开发者深入理解Java的精髓。书中涵盖了Java语言的各个方面,从...

    Thinking In Java(中文第四版)

    ### 《Thinking in Java(中文第四版)》关键知识点概览 #### 一、书籍概述 - **作者**: Bruce Eckel - **书籍定位**: 适用于初学者至中高级水平的Java开发者 - **特点**: 结合实际示例,深入浅出地讲解Java的核心...

    thinking in Java guide solutio

    根据提供的文件信息,我们可以将《Thinking in Java》第四版中的主要内容和知识点进行详细的解析与总结。本书由Bruce Eckel编写,是学习Java编程语言的经典教材之一。以下是对书中的几个关键章节及其涵盖的重要知识...

    Thinking in java 4th

    《Thinking in Java》是Bruce Eckel的经典编程教材,第四版更是深受全球程序员喜爱。这本书深入浅出地介绍了Java编程语言,不仅适合初学者,也对有经验的开发者提供了丰富的知识。下面,我们将从多个方面详细解析...

    thinking in java第四版练习题答案

    了解如何定义类,包括属性(fields)和方法(methods),以及构造器(constructors)的使用,是学习Java的基础。 2. **封装**:封装是面向对象的三大特性之一,它隐藏了对象内部的实现细节,只对外提供公共接口。...

    thinking in java Englinsh

    《Thinking in Java》是Java编程领域的一本经典之作,由Bruce Eckel撰写,第四版更是集大成者,被广大读者誉为学习Java的必备书籍。本书不仅深入浅出地讲解了Java语言的核心概念,还提供了丰富的实战案例,使得理论...

    thinking in java txt

    ### Java编程思想——《Thinking in Java》核心知识点梳理 #### 一、前言与学习目标 - **前言**:本书旨在帮助读者深入理解Java语言的设计理念及其在实际开发中的应用。 - **学习目标**: - 掌握Java基础知识与...

    书本联系题答案 Thinking In Java 第四版

    3. **构造器**:介绍了构造器的作用和使用,包括默认构造器和自定义构造器。 4. **方法**:详细讨论了方法的定义、参数传递、重载和重写。 5. **继承与多态**:讲解了如何通过继承扩展类的功能,以及多态带来的...

    Thinking In Java第四版(中文版)

    《Thinking In Java》详细讲解了类、对象、继承、多态和封装等核心概念。此外,还涵盖了接口、抽象类、访问修饰符以及构造器等与面向对象编程密切相关的知识点。 3. **集合框架**:Java集合框架是处理对象集合的...

Global site tag (gtag.js) - Google Analytics