OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

Similar documents
OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

软件工程文档编制

无类继承.key


《大话设计模式》第一章

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

untitled

OOP with Java 通知 Project 3: 4 月 19 日晚 9 点

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

javaexample-02.pdf

Microsoft Word - 新1-12.doc

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

JavaIO.PDF

Microsoft Word - chap10.doc

Chapter 9: Objects and Classes

Strings

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

untitled

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

EJB-Programming-4-cn.doc

Microsoft Word - 01.DOC

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Microsoft Word - ch04三校.doc

untitled

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

全国计算机技术与软件专业技术资格(水平)考试

Chapter 9: Objects and Classes

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

Microsoft Word - 物件導向編程精要.doc

untitled

Microsoft Word - 第6章.doc

chp6.ppt

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

Microsoft PowerPoint - L17_Inheritance_v4.pptx

untitled

EJB-Programming-3.PDF

附录J:Eclipse教程

Java

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

Guava学习之Resources

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac)


untitled


王 晓 焰 社 会 性 别 理 论 与 世 纪 英 国 妇 女 的 社 会 地 位 代 对 终 身 产 生 影 响 二 是 称 为 结 构 性 别 的 社 会 性 别 它 用 以 表 示 两 性 关 系 分 野 下 的 社 会 结 构 即 作 为 社 会 的 组 织 和 结 构 中 体 现 出 的


untitled

untitled


untitled

Strings

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检

untitled

, 即 使 是 在 昏 暗 的 灯 光 下, 她 仍 然 可 以 那 么 耀 眼 我 没 有 地 方 去, 你 会 带 着 我 么 杜 晗 像 是 在 嘲 笑 一 般, 嘴 角 的 一 抹 冷 笑 有 着 不 适 合 这 个 年 龄 的 冷 酷 和 无 情, 看 着 江 华 的 眼 神 毫 无 温

Microsoft Word - Learn Objective-C.doc

建模与图形思考

OOP with Java 通知 Project 7, 6 月 14 日晚 9 点 本周四上机课正常进行 答疑 本周三, 周五下午 1:00 3:00, 理科楼 B911 6 月 12 日考试 ( 随堂 ) 下午 1:00-3:00 教书院 218

untitled

使用MapReduce读取XML文件

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

提问袁小兵:

電機工程系認可證照清單 /7/1

拦截器(Interceptor)的学习

Microsoft PowerPoint - 6. 用户定义类型User-defined Datatypes.ppt [兼容模式]

D C 93 2

java2d-4.PDF

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

<4D F736F F F696E74202D20B8DFBCB6D3C3BBA7BDE7C3E6D3EBB6E0CFDFB3CC2E707074>

1.5招募说明书(草案)

新版 明解C++入門編

基于ECO的UML模型驱动的数据库应用开发1.doc

ASP.NET实现下拉框二级联动组件

Microsoft Word cppFinalSolution.doc

mvc

概述

untitled

北 风 网 讲 师 原 创 作 品 ---- 仅 供 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见

Swing-02.pdf

FY.DOC

建模与图形思考

模板

Transcription:

OOP with Java Yuanbin Wu cs@ecnu

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class - Table.class import restaurant.people.cook; import restaurant.tools.fork; import restaurant.tools.*; import restaurant.*; 访问控制 package access (default package) public, private, protected 封装 将易变的与稳定的部分区分开 在满足需求的情况下, 接口尽量简单

OOP with Java 类的复用 组合 继承 组合与继承

类的复用 类的复用 (reusing classes) 如何通过已有类来定义新的类 copy and paste?

类的复用 情况 1 class B 中包含 class A 类型的数据成员 例如 : 引擎类 : class Engine Car 轮胎类 : class Wheel 离合器类 : class Clutch 汽车类? has-a 关系 Engine engine; Wheel wheels[4]; Clutch clutch; 组合 (composition)

类的复用 情况 2 class B 带有 class A 所有的数据和方法成员, 同时在此基础上增加一些新的成员 / 修改原有的成员 例如 : 跑车类具有汽车类的所有方法 is-a 关系 A cat is an animal A dog is an animal Cat eat() sleep() Animal Dog eat() sleep() eat() sleep() 继承 (Inheritance)

类的复用 重复使用已有类的两种方式 组合 (composition) 继承 (inheritance)

组合 将已有的类作为新类的数据成员 class MyType { public int i; public double d; public char c; public void set(double x) { d = x; public double get() { return d; public class MyCompType { private MyType m = new MyType(); private String s; public MyCompType(){ s = new String( Hello );

组合 初始化 ( 复习 ) 默认初始化 (null) 定义时初始化 构造函数初始化 用时初始化 当需要使用该成员时再初始化

继承 新类包含已有类的方法和数据, 并可修改 / 增添 语法 : extends A 称为父类 (super class) 或基类 (base class) B 称为子类 (sub-class) class A{ A public class B extends A { B

继承 例子 class MyType { public int i; public double d; public char c; public void set(double x) { d = x; public double get() { return d; public class MySubType extends MyType{ public static void main(string [ ]args){ MySubType ms = new MySubType(); ms.set(1.0); System.out.println(ms.get()); System.out.println(ms.i); 1. 子类有父类的所有方法和数据.

继承 例子 class MyType { public int i; public double d; public char c; public void set(double x) { d = x; public double get() { return d; 2. 子类可以定义新的方法和数据. public class MySubType extends MyType{ String s = new String( Hello ); public double add(double d){ return this.d + d; public double add(string s){ return this.s + s; public static void main(string [ ]args){ MySubType ms = new MySubType(); System.out.println(ms.get()); System.out.println(ms.add(1.0)); System.out.println(ms.add( World ));

继承 例子 class MyType { public int i; public double d; public char c; public void set(double x) { d = x; public double get() { return d; public class MySubType extends MyType{ public void set(double x){ i = (int)x; public double get() { return i; public static void main(string [ ]args){ MySubType ms = new MySubType(); ms.set(1.0); System.out.println(ms.get()); System.out.println(ms.i); System.out.println(ms.d); 3. 子类可以更新父类的方法, 称为重写 (overriding)

继承 继承的基本功能 子类有父类的所有方法和数据 子类可以定义新的方法和数据 子类可以重写 (override) 父类的方法

继承 当定义一个子类时发生了什么? 可能性 1: copy&paste 父类的接口和数据, 创建一个新的类 class MyType { public int i; public double d; public char c; public void set(double x) { d = x; public double get() { return d; COPY public class MySubType { public int i; public double d; public char c; public void set(double x) { d = x; public double get() { return d; public string s; public childmethods() {...

继承 当定义一个子类时发生了什么? 可能性 2: 创建一个新的类, 包含一个父类的对象作为数据成员 ( 组合!) class MyType { public int i; public double d; public char c; public void set(double x) { d = x; public double get() { return d; COMPOSITION public class MySubType { public MyType m; public string s; public childmethods() {...

继承 super 关键字 子类的对象包含一个隐藏的父类对象 在子类中, super 用来指代父类对象的引用 this 关键字 作用 当方法被重写时, 可以通过 super 调用父类的方法

继承 构造函数 在子类构造函数调用前, 首先调用父类构造函数 class MyType { public int i; public double d; public char c; public void set(double x) { d = x; public double get() { return d; public MyType(){ System.out.println( In base class ); public class MySubType extends MyType{ public MySubType (){ System.out.println( In sub class ); public static void main(string [ ]args){ MySubType ms = new MySubType(); class MySubSubType extends MySubType{ public MySubSubType (){ System.out.println( In sub sub class );

继承 构造函数 调用父类带参数的构造函数 必须出现在子类构造函数的首行 class MyType { public int i; public double d; public char c; public void set(double x) { d = x; public double get() { return d; public MyType(){ System.out.println( In base class ); public MyType(double d){ this.d = d; public class MySubType extends MyType{ public MySubType (){ super(1.0); System.out.println( In sub class ); public static void main(string [ ]args){ MySubType ms = new MySubType();

继承 Object class 每个类都是 Object class 的子类 Single root class hierarchy tree tostring(), equals(),.. Let s try Object B MyType A MySubType

继承 重写 (override) 子类重新实现父类的方法 ( 同一个函数 ) 重载 (overload) 相同函数名, 不同参数列表

继承 例子 class MyType { public int i; public double d; public char c; public void set(double x) { d = x; public void set(int y) {i = y; public double get() { return d; public class MySubType extends MyType{ public void set(double x){ i = (int)x; public void set(char z) {c = z; public static void main(string [ ]args){ MySubType ms = new MySubType(); ms.set(1.0); System.out.println(ms.get()); System.out.println(ms.i); System.out.println(ms.d);

继承 例子 class MyType { public int i; public double d; public char c; private void set(double x) { d = x; private void set(int y) {i = y; public double get() { return d; public class MySubType extends MyType{ public void set(double x){ i = (int)x; public void set(char z) {c = z; public static void main(string [ ]args){ MySubType ms = new MySubType(); ms.set(1.0); System.out.println(ms.get()); System.out.println(ms.i); System.out.println(ms.d);

组合与继承 class MyType { public int i; public double d; public char c; public void set(double x) { d = x; public double get() { return d; public class MyCompType { private MyType m = new MyType(); private String s; public MyCompType(){ s = new String( Hello ); public class MySubType extends MyType{ public static void main(string [ ]args){ MySubType ms = new MySubType(); ms.set(1.0); System.out.println(ms.get()); System.out.println(ms.i);

组合与继承 同时使用组合与继承 public class MySubType extends MyType{ String s = new String( Hello ); public static void main(string [ ]args){ MySubType ms = new MySubType(); ms.set(1.0); System.out.println(ms.get()); System.out.println(ms.i);

组合与继承 比较 B, C 对象都包含一个 A 的对象 访问方式不同 b.a.get(); b.a.set(1); c.get(); c.set(1); 设计角度 : 类间关系不同 has-a 关系 is-a 关系 class A{ public get(){ public set(int i){ class B{ public A a = new A(); class C extends A {

组合与继承 没有 is-a 关系, 但需能调用另一类的所有方法 class SpaceShipControls{ void up(int v) { void down(int v) { void left(int v) { void right(int v) { void forward(int v) { void backward(int v) { class SpaceShip extends SpaceShipControls{ Static public void main(string []args){ SpaceShip s = new SpaceShip(); s.up(); s.forward(); 代理 (Delegation) 介于组合与继承之间 class SpaceShip { Private SpaceShipControls s; public void up() {s.up(); public void down() {s.down(); public void left() {s.left(); public void up() {s.right(); public void forward() {s.forward(); public void backward() {s.backward();

总结 组合 类 B 包含类 A 作为数据成员 has-a 继承 类 B 具有类 A 的所有数据与方法, 并能增添修改 Is-a 方法重写 (override)