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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


软件工程文档编制

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

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

《大话设计模式》第一章

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

untitled

untitled

Microsoft Word - 新1-12.doc

无类继承.key

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 PowerPoint - plan08.ppt

EJB-Programming-4-cn.doc

Chapter 9: Objects and Classes

JavaIO.PDF

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

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

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

Microsoft Word - 01.DOC

javaexample-02.pdf

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

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

untitled

附录J:Eclipse教程

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

Microsoft Word - chap10.doc

Microsoft Word - ch04三校.doc

chp6.ppt

模板

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

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

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

untitled

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

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

Strings

untitled

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

ebook55-13

Microsoft PowerPoint - L17_Inheritance_v4.pptx

提问袁小兵:

Java

untitled

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

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

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

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

Chapter 9: Objects and Classes

Strings

使用MapReduce读取XML文件

1.5招募说明书(草案)

Microsoft PowerPoint ShengYang Presentation Slides_240609

<4D F736F F F696E74202D20B5DA3035D5C220C3E6CFF2B6D4CFF3B8DFBCB6B3CCD0F2C9E8BCC6>

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

用户大会 论文集2.2.doc

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

(procedure-oriented)?? 2

融通开放式基金月刊(2009年4月).doc

Microsoft Word - 特种水产饲料行业研究报告.docx

CC213

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

Java 1 Java String Date

java2d-4.PDF

建模与图形思考

untitled

untitled

RunPC2_.doc

EJB-Programming-3.PDF

基于CDIO一体化理念的课程教学大纲设计

Microsoft Word cppFinalSolution.doc

3.1 num = 3 ch = 'C' 2

尽 管 Java 语 言 是 在 C++ 语 言 基 础 上 发 展 起 来 的, 但 是 有 别 于 C++,Java 是 一 种 纯 粹 的 面 向 对 象 语 言 (Object-oriented language) 在 像 Java 这 样 纯 粹 的 面 向 对 象 语 言 中, 所 有

Guava学习之Resources

Microsoft Word - Learn Objective-C.doc

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

untitled

RxJava

尽 管 Java 语 言 是 在 C++ 语 言 基 础 上 发 展 起 来 的, 但 与 C++ 不 同,Java 是 一 种 纯 粹 的 面 向 对 象 语 言 (Object-oriented language) 在 Java 世 界 中, 所 有 事 物 都 是 Object 1. 通 过

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

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

第3章.doc

untitled

Microsoft Word - 第6章.doc

D C 93 2

Transcription:

OOP with Java Yuanbin Wu cs@ecnu

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

复习 类的复用 组合 (composition): has-a 关系 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 );

复习 继承 (inheritance) is-a 关系 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{ String s = new String( Hello ); public double add(double d){return this.d + d; public double add(string s){return this.s + s; public void set(double x){ i = (int)x; public double get() { return i; 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 ));

复习 继承 子类有父类的所有方法和数据 子类可以定义新的方法和数据 子类可以重写 (override) 父类的方法 super 关键字 每一个子类对象都隐含包含一个父类对象 Object 对象 Single root class hierarchy tree

OOP with Java protected upcasting final 关键字

protected 访问控制 package access public private

protected 函数重写 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);

protected 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);

protected protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access

protected class MyType { public int i; public double d; public char c; protected void set(double x) { d = x; protected 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);

Upcasting 继承 重用 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 class MySubType{ public int i; public double d; public char c; public void set(double x) { d = x; public double get() { return d; String s = new String( Hello ); public double add(double d){return this.d + d; public double add(string s){return this.s + s;

Upcasting 继承 is-a 关系 子类有父类所有的数据和方法 类型关系 : 子类是一种父类 the sub-class is a type of the base class

Upcasting 例子 class Instrument { public void play() { static void tune(instrument i) { //... i.play(); public class Wind extends Instrument { public static void main(string[] args) { Wind flute = new Wind(); Instrument.tune(flute); Upcasting

Upcasting 例子 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(); MyType m = ms; System.out.println(m.get()); System.out.println(ms.add("World")); m.set(1.0); System.out.println(m.get()); System.out.println(ms.get());

Upcasting Upcasting 需要父类对象 引用, 函数参数 可以用子类对象带入 安全的类型转换 子类拥有父类所有的数据和方法

Upcasting Object Upcasting Upcasting B MyType A Downcasting MySubType

Upcasting 子类重写了父类方法? class MyType { public int i; public double d; public char c; protected void set(double x) { d = x; protected void set(int y) {i = y; public double get() { return d; 多态 public class MySubType extends MyType{ public void set(double d){ System.out.println( Sub-class set ); i = int(d); public static void main(string [ ]args){ MySubType ms = new MySubType(); MyType m = ms; m.set(1.0);

Upcasting 类型转化 基本类型 int double ( 安全, 自动转换 ) double int ( 损失精度, 强制转换 ) 基本类型与 wrapper 类 int Integer (autoboxing) Integer int (unboxing) 不支持强制转化 子类 父类 ( 安全, upcasting) 父类 子类 ( 多态, downcasting)

final 关键字 final 关键字 不同的环境下有不同含义 基本意义为 : 不能被改变

final 关键字 final 数据 编译时常数 一旦被赋值就不能被修改

final 关键字 final 数据 例子 class MyType { public int i; public final double d = 1; public char c; public double get() { return d; public void set(double x) {d = x; public static void main(string []args){ MyType m = new MyType(); // m.d = 2.0;

final 关键字 final 数据 final 引用 class MyType { public int i; public final double d = 1; public char c; public final int [ ] a = new int[10]; public double get() { return d; public void set(double x) {d = x; public static void main(string []args){ MyType m = new MyType(); m.a[0] = 1.0; //m.a = new int[10];

final 关键字 final 数据 final + static static final int i = 1; 仅有一个不可变的存储空间

final 关键字 final 数据 Blank final final 成员在定义时可以不给初值必须在构造函数中初始化 class MyType { public int i; public final double d; public char c; public double get() { return d; public MyType(double x){ d = x; public static void main(string []args){ MyType m = new MyType(1.0); System.out.println(m.get()); // m.d = 2.0;

final 关键字 final 参数 函数不能修改参数的引用. class FinalArgs { public static void set(final int [ ] a) { a[0] = 1; // a = new int [10]; public static void main(string []args){ int [ ]a = new int[10]; FinalArgs.set(a);

final 关键字 final method 不能被重写 class MyType { public int i; public double d; public char c; final void set(double x) { d = x; protected void set(int y) {i = y; public double get() { return d; public class MySubType extends MyType{ // can t overide /* public void set(double d){ System.out.println( Sub-class set ); i = int(d); */ public static void main(string [ ]args){ MySubType ms = new MySubType(); MyType m = ms; m.set(1.0);

final 关键字 final class 不能被继承 final class MyType { public int i; public double d; public char c; final void set(double x) { d = x; protected void set(int y) {i = y; public double get() { return d; // can not be extended /* public class MySubType extends MyType{ public void set(double d){ System.out.println( Sub-class set ); i = int(d); public static void main(string [ ]args){ MySubType ms = new MySubType(); MyType m = ms; m.set(1.0); */

final 关键字 不可变 (immutable) 不可变对象 : 一旦创建就不能更改其状态 优点 : 易于使用, 易于 debug, 易于维护 缺点 : 空间 / 时间消耗 final 帮助构造不可变对象