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

Similar documents
OOP with Java 通知 Project 4: 4 月 18 日晚 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 点 另一名助教 : 王桢

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

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

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

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

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

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

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

软件工程文档编制

Microsoft PowerPoint - plan08.ppt

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


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

javaexample-02.pdf

《大话设计模式》第一章

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 - 把时间当作朋友(2011第3版)3.0.b.06.doc

无类继承.key

untitled

untitled

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

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

Microsoft Word - 新1-12.doc

Chapter 9: Objects and Classes

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

Microsoft Word - 01.DOC

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

EJB-Programming-4-cn.doc

JavaIO.PDF

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

Microsoft Word - ch04三校.doc

ebook55-13

untitled

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

附录J:Eclipse教程

Microsoft Word - chap10.doc

Strings

模板

chp6.ppt

Microsoft Word - 第6章.doc

Java

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

Strings

EJB-Programming-3.PDF

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

JAVA String常用APi

内 容 提 要 将 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>

untitled

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

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

Microsoft PowerPoint - L17_Inheritance_v4.pptx

提问袁小兵:

Guava学习之Resources

untitled

<4D F736F F F696E74202D20B5DA3035D5C220C3E6CFF2B6D4CFF3B8DFBCB6B3CCD0F2C9E8BCC6>

untitled

3.1 num = 3 ch = 'C' 2

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

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

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

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

Chapter 9: Objects and Classes

java2d-4.PDF

使用MapReduce读取XML文件

1.5招募说明书(草案)

Microsoft PowerPoint ShengYang Presentation Slides_240609

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

用户大会 论文集2.2.doc

(procedure-oriented)?? 2

CC213

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

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

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

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

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

Java 1 Java String Date

建模与图形思考

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

RunPC2_.doc

Microsoft PowerPoint - course2.ppt

untitled

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

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

OOP with Java 通知 Project 7 :6 月 27 日晚 9 点 6 月 14 日复习 6 月 21 日考试 答疑 6 月 20 日 13 : : 00 理科楼 B911

Microsoft Word cppFinalSolution.doc

雲端 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

<4D F736F F F696E74202D C DB5DA3131D5C25FBCCCB3D0BACDB6E0CCAC2E BBCE6C8DDC4A3CABD5D>

OOP with Java 通知 Project 7 :6 月 14 日晚 9 点 6 月 5 日复习 6 月 12 日考试

슬라이드 1

Transcription:

OOP with Java Yuanbin Wu cs@ecnu

OOP with Java 通知 Project 4: 4 月 19 日晚 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 方法 : boolean equals(object o) String tostring() class MyType { public int i; public double d; public char c; public void set(double x) { d = x; public double get() { return d; public static void main(string [ ]args){ MyType m = new MyType(); MyType n = new MyType(); String s = hello ; m.equals(n); m.equals(s);

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 double foo(){ return get(); 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; private double get() { return d; public class MySubType extends MyType{ // can not access!! // public double foo(){ return get(); 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 父类的方法 public private 是否有可能被子类访问而不被外界访问?

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; protected double get() { return d; public class MySubType extends MyType{ public double foo(){ return get(); 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 访问控制 package access public private protected

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 Upcasting Object 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)

Upcasting Downcasting MySubType ms = (MySubType)m; 仅在 m 确实指向子类对象时才能进行 运行时类型信息 (RTTI) 例子 : 重写 equals 方法

Upcasting 总结 子类是一种父类 (is-a) 父类的引用可以指向子类对象

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 class MyType { public int i; public final double d; public char c; public double get() { return d; public MyType(double x){ d = x; final 成员在定义时可以不给初值必须在构造函数中初始化 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 帮助构造不可变对象