- 浏览: 55743 次
- 性别:
- 来自: 上海
最新评论
java 代码
- //: notes about thinking in java
- //c07:Sandwich.java
- // Order of constructor calls.
- // From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
- // www.BruceEckel.com. See copyright notice in CopyRight.txt.
- package c07;
- import com.bruceeckel.simpletest.*;
- 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()");}
- }
- public class Sandwich extends PortableLunch {
- private static Test monitor = new Test();
- private Bread b = new Bread();
- private Cheese c = new Cheese();
- private Lettuce l = new Lettuce();
- public Sandwich() {
- System.out.println("Sandwich()");
- }
- public static void main(String[] args) {
- new Sandwich();
- monitor.expect(new String[] {
- "Meal()",
- "Lunch()",
- "PortableLunch()",
- "Bread()",
- "Cheese()",
- "Lettuce()",
- "Sandwich()"
- });
- }
- } ///:~
- /*例子说明对象调用构造器要遵循以下顺序:
- 1)调用基类构造器。这个步骤会不断反复递归下去,首先是构造这种层次结构的根,
- 然后是下一层倒出类,等等,知道最底层的倒出类
- 2)按声明顺序调用成员的初始化方法
- 3)调用导出类构造器的主体*/
java 代码
- //:notes about thinking in java
- //c07:PolyConstructors.java
- // Constructors and polymorphism
- // don't produce what you might expect.
- // From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
- // www.BruceEckel.com. See copyright notice in CopyRight.txt.
- import com.bruceeckel.simpletest.*;
- abstract class Glyph {
- abstract void draw();
- Glyph() {
- System.out.println("Glyph() before draw()");
- draw();
- System.out.println("Glyph() after draw()");
- }
- }
- class RoundGlyph extends Glyph {
- private int radius = 1;
- RoundGlyph(int r) {
- radius = r;
- System.out.println(
- "RoundGlyph.RoundGlyph(), radius = " + radius);
- }
- void draw() {
- System.out.println(
- "RoundGlyph.draw(), radius = " + radius);
- }
- }
- public class PolyConstructors {
- private static Test monitor = new Test();
- public static void main(String[] args) {
- new RoundGlyph(5);
- monitor.expect(new String[] {
- "Glyph() before draw()",
- "RoundGlyph.draw(), radius = 0",
- "Glyph() after draw()",
- "RoundGlyph.RoundGlyph(), radius = 5"
- });
- }
- } ///:~
- /*在Glyph中,draw()方法是抽象的,这样设计是为了覆盖该方法。我们确实在RoundGlyph中强制覆盖
- draw()。但是Glyph构造器会调用这个方法,结果导致了对RoundGlyph.draw()的调用,这看起来
- 似乎是我们的目的。但是看到输出结果时我们会发现Glyph的构造起用draw()方法时,radius不是默认
- 初始值1,而是0。这可能是导致在屏幕上只画了一个点,或者根本什么东西都没有。
- 这一迷题的关键所在,初始化的实际过程是:
- 1)在其他任何事务发生之前,将分配给对象的存储空间初始化成二进制的零
- 2)如前所述那样调用构造器。此时,调用被覆盖后的draw()方法(要在调用RoundGlyph
- 构造器之前调用),由于步骤1的缘故,我们此时会发现radius的值为0
- 3)按照声明的顺序调用成员的初始化方法
- 4)调用导出类的构造器主题*/
- 课件附件.rar (570.6 KB)
- 描述: 课件附件以便查阅
- 下载次数: 12
发表评论
-
ddddddddddddddd
2009-04-07 22:56 0dddddddddddddd -
工厂模式经典例子
2007-10-31 21:28 1551package org.lxh.demo ; import j ... -
笔记**************
2007-10-31 21:26 1340环境变量C:\jdk1.5.0_04 JDK安装路径 JA ... -
thinkinjava一系列项目
2007-08-15 13:26 1169本章包含了一系列项目 ... -
附录C Java编程规则
2007-08-15 13:25 1010本附录包含了大量有用 ... -
附录A 使用非JAVA代码
2007-08-15 13:24 1338附录A 使用非JAVA代码 JA ... -
对比C++和Java
2007-08-15 13:20 954附录B 对比C++和Java “作为一名C++程序员,我们早 ... -
JSP笔记
2007-08-08 18:16 2143Tomcat下建立虚拟目录 例: 建立目录 d ... -
JSP & Servlet解惑^_^
2007-08-07 19:03 1586钻进去几天,虽然网上找过问题的答案,但到现在看到Marty ... -
java笔记十
2007-08-03 21:03 729java 代码 pa ... -
java笔记九
2007-08-02 12:45 1008java 代码 /* AWT(A ... -
java笔记八
2007-08-01 19:02 977对象序列化 将对象转换为字节流保存起来,并在日后还原这个对象, ... -
java笔记七
2007-08-01 16:16 1093java 代码 /*RandomAcce ... -
java笔记六
2007-07-31 19:07 931流(Stream)是字节的源或目的。 两种基本的流是:输入流( ... -
java笔记五
2007-07-31 08:52 854ArrayList和LinkedList的比较 ArrayLi ... -
java笔记四
2007-07-31 08:51 955程序是计算机指令的集合,它以文件的形式存储在磁盘上。 进程:是 ... -
java笔记三
2007-07-28 18:27 894java 代码 /*java迭代器Iterat ... -
eclipse快捷键
2007-07-28 13:07 824本文档从Eclipse软件上整 ... -
java笔记二
2007-07-28 13:06 833java 代码 //*孙鑫教程笔记。接口中run ... -
在eclipse + MyEclipse+tomcat下配置建立J2EE工程环境
2007-07-26 19:13 4401在eclipse + MyEclipse+tomcat下配置 ...
相关推荐
JAVA笔记1.pdf
java笔记java笔记java笔记java笔记java笔记java笔记java笔记
Java的设计理念是“一次编写,到处运行”,这意味着编写的Java程序可以在任何安装了Java虚拟机(JVM)的设备上运行。 #### 1.1 Java的特点 - **面向对象**:Java是一种纯粹的面向对象的语言,几乎所有的数据都是以...
Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...
本项目名为"Java笔记桌面程序",它是由一个热衷于编程的开发者为解决其所在公司无法使用网络笔记客户端的问题而自创的。这个程序采用Java语言编写,充分体现了Java的跨平台特性,可以在多种操作系统上运行,包括...
【宋红康java笔记】是一份综合性的Java学习资料,由知名编程教育者宋红康编撰。这份压缩包文件包含了大量的Java编程知识点,旨在帮助初学者和有经验的开发者深入理解和掌握Java语言的核心概念与高级特性。以下是根据...
专业的Java笔记可能会涉及这些内容,帮助学习者掌握Java的最新发展。 遗憾的是,由于【部分内容】部分不包含实际的笔记内容,无法进一步提供具体的编程示例和深入的解释。如果要学习Java,最好的方式是从学习Java的...
这份"非常好的java笔记"无疑是初学者踏入这个领域的宝贵资源。笔记由培训班的专业老师编写,内容详细且全面,旨在帮助初学者系统地学习和理解Java的基础知识。 首先,Java基础部分会涵盖变量、数据类型、运算符、...
【标题】"java读书笔记笔记笔记笔记笔记笔记" 暗示了这是一份关于Java编程语言的学习笔记,可能包含了作者在阅读Java相关书籍时所做的重要记录和理解。笔记通常涵盖了语言的基础概念、核心特性、类与对象、内存管理...
《狂神说Java笔记资料》是一份全面涵盖Java开发基础知识的文档集,旨在帮助学习者系统地掌握Java编程。这份笔记包含多个章节,每个章节都深入讲解了一个特定的主题,覆盖了从初学者到进阶开发者必备的知识点。 1. *...
【Java笔记内容概览】 1. **基础语法**:涵盖变量、数据类型、运算符、流程控制(条件语句、循环语句)、数组、字符串等基础知识。 2. **面向对象**:讲解类、对象、封装、继承、多态等核心概念,以及构造函数、...
Java学习笔记1 Java学习笔记1是学习Java过程中的笔记,主要记录了Eclipse开发环境中的快捷键使用、编辑功能、查找和调试等知识点。 Eclipse快捷键 Eclipse中有许多快捷键,掌握这些快捷键可以大大提高开发效率。...
"Java超强笔记"正是一份专为新手准备的学习资源,它全面涵盖了从Java环境的搭建到软件设计的各种概念,旨在提供一个易读且系统的学习路径。 首先,笔记可能会从Java的起源和发展开始介绍,让你了解这门语言的历史...
2020-4-6 java笔记 ---内部类 2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 2020-4-8 java笔记 String类 2020-4-9 java 比较器 2020-4-10 java笔记 枚举类 2020-4-10 java 注解(Annotation) 2020-4-11 ...
“尚硅谷JAVA基础笔记”涵盖了Java语言的基础知识,包括语言概述、基本语法、面向对象概念、封装、继承和多态,以及一些关键概念如形参与实参、属性与局部变量、构造器、this关键字、包和MVC设计模式的使用。...
全套java笔记整理,侧边栏目录结构方便查看,纯手工整理。达内笔记整理。 已整理成带侧边栏目录的网页结构,方便复习大纲和跳转查看。大部分都带有笔记代码。 (默认设置为深珊瑚蓝色调,不喜欢可以把配置文件里的...
1. **面向对象编程**:Java的核心概念之一,强调封装、继承、多态等特性。 2. **图形用户界面开发**:使用Swing或JavaFX等框架创建桌面应用。 3. **数据库编程**:连接数据库、执行SQL查询等操作。 4. **文件I/O流...
java笔记java笔记java笔记java笔记java笔记java笔记java笔记java笔记
1. 面向对象(OOP):Java的核心是面向对象编程,它将数据和操作数据的方法封装在一起,形成类。面向对象的三大特性——封装、继承和多态,在06面向对象(上)、07面向对象(中)和08面向对象(下)中进行了详细介绍...