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

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

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

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

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

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

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

新・解きながら学ぶJava

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

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

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

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

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

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

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

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

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

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

untitled

JavaIO.PDF

无类继承.key


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

untitled

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

Microsoft Word - ch04三校.doc

untitled

软件工程文档编制

《大话设计模式》第一章

附录J:Eclipse教程

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

chap07.key

Microsoft Word - 第3章.doc

CC213

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

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

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

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

javaexample-02.pdf

Chapter 9: Objects and Classes

EJB-Programming-4-cn.doc

Microsoft Word - 01.DOC

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

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

第3章.doc

untitled

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

Microsoft Word - 新1-12.doc

4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / /

chp6.ppt

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

untitled

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

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

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

新版 明解C++入門編

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

java2d-4.PDF

EJB-Programming-3.PDF

CHAPTER VC#

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

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

Chapter12 Derived Classes

untitled

C 1

Microsoft PowerPoint - L17_Inheritance_v4.pptx

Microsoft PowerPoint - string_kruse [兼容模式]

Chapter 9: Objects and Classes

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

untitled

untitled

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

FY.DOC

untitled

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

FileMaker 15 ODBC 和 JDBC 指南

提问袁小兵:

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

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)





1 下列类头定义中, 正确的是 面向对象程序设计网络课程 A class x { } B public x extends y { } C public class x extends y {.} D class x extends y implements y1 { } 2 现有两个类 A B,

Java

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

Strings

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

c_cpp

Microsoft PowerPoint ShengYang Presentation Slides_240609

使用MapReduce读取XML文件

02

untitled

untitled

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

RunPC2_.doc

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

extend

Learning Java

C/C++程序设计 - 字符串与格式化输入/输出

Transcription:

OOP with Java Yuanbin Wu cs@ecnu

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

复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x) { d = x; double get() { return d; MyType(double x) { set(x); ; MyType() { System.out.println( mytype create ); ; public static void main(string [ ]args) { MyType m = new MyType(); MyType n = new MyType(2.0); public class Printer { void print(int x) { System.out.println( print an integer: + x); void print(mytype m) { System.out.println( print a MyType: + m.get());

复习 this 关键字 在类的非静态方法中, 返回调用该方法的对象的引用 销毁对象 public class MyType { int i; double d; char c; void set(double x) { this.d = x; double get() { return d; public static void main(string [ ]args) { MyType m = new MyType(); m.set(1); 垃圾回收不等于销毁对象 仅回收 new 创建的内存 是否回收, 何时回收由 Java 虚拟机控制.

OOP with Java Java 包 访问控制 封装

Java 包 程序代码的组织方式 表达式 a+b, x = 1, 语句 int a = 1, b = 2; 控制结构 If-else, loops 方法 ( 函数 ) 类 程序库 ( 多个类 ) 包

Java 包 包 (package) 由多个类组成 这些类共享同一个名字空间 (namespace)

Java 包 例子 :java.util 包的名字 : java.util 包含 java 提供的常用工具 java.util.linkedlist java.util.date java.util.random.

Java 包 使用包 直接使用 import 语句 import java.util.linkedlist; import java.util.date; import java.util.random; import java.util.*;

Java 包 创建包 package 语句.java 文件首行 创建文件目录结构 一致 : 包的名称与文件目录结构 Let try

Java 包 package mypackage; public class MyType { int i; double d; char c; public void set(double x) { d = x; public double get() { return d; public MyType(int i1, double d1, char c1){ i = i1; d = d1; c = c1; public static void main(string []args){ MyType m = new MyType(1, 1.0, 'a'); System.out.println(m.get()); javac mypackage/mytype.java java mypackage/mytype java mypackage.mytype

Java 包 包结构与目录结构 将 java 文件放入不同的子目录中 Let s try restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class - Table.class import restaurant.people.cook; import restaurant.tools.fork; import restaurant.tools.*; import restaurant.*;

Java 包 使用包 classpath javac, java 的参数 (-cp), CLASSPATH 环境变量 指定使用包的位置 Let s try

Java 包 类共享同一个名字空间 (namespace) 同一个包中, 类的名字不能相同 不同包中, 类的名字可以相同 包结构 = 目录结构 例如 restaurant/ - people/ - Cook.class - Waiter.class - A.class - tools/ - Fork.class - Table.class - A.class import restaurant.people.a; import restaurant.tools.a; import restaurant.*;

Java 包 jar 包 打包 包 (packed package) 将包 ( 目录 ) 变成文件 方便发布, 使用 c: create f: output to fle jar cf restaurant.jar restaurant

访问控制 访问控制 类 : 数据 + 方法 公开的数据和方法 提供服务 所有用户都可以使用 需要保持稳定, 不经常变化 隐藏的数据和方法 细节的, 辅助性的方法和数据 不向用户公开 易变

访问控制 例子 public class Refrigerator{ Refrigerator() { open() { close() { put() { get() { enginestart() { enginesleep() { lighton() { lightof() {

访问控制 访问控制 控制类的数据 / 方法 : 是否能被访问? 能被哪些用户访问 package access public private protected

访问控制 package access 一个类的成员被标识为 package access 同一个包中的类可以访问 其他包中的类不能访问 没有标识符

访问控制 package access 例子 package mypackage; public class MyType { int i; double d; char c; void set(double x) { d = x; double get() { return d; MyType(int i1, double d1, char c1){ i = i1; d = d1; c = c1; package mypackage; public class AnotherType { public static void main(string [ ]args){ MyType m = new MyType(1, 1.0, a ); int i = m.i; double d = m.d; char c = m.c; m.set(2); System.out.println(m.get());

访问控制 package access 默认包 (Default Package) //package mypackage; public class MyType { int i; double d; char c; void set(double x) { d = x; double get() { return d; MyType(int i1, double d1, char c1){ i = i1; d = d1; c = c1; //package mypackage; public class AnotherType { public static void main(string [ ]args){ MyType m = new MyType(1, 1.0, a ); int i = m.i; double d = m.d; char c = m.c; m.set(2); System.out.println(m.get());

访问控制 package access 默认包 (default package) 如果没有 package 语句, java 默认当前目录中的 java 文件属于同一个包

访问控制 public 类的成员标识为 public, 则所有用户都能访问该成员 package mypackage; public 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(int i1, double d1, char c1){ i = i1; d = d1; c = c1; import mypackage.mytype; public class AnotherType { public static void main(string [ ]args){ MyType m = new MyType(1, 1.0, a ); int i = m.i; double d = m.d; char c = m.c; m.set(2); System.out.println(m.get());

访问控制 public package mypackage; public class MyType { int i; double d; char c; void set(double x) { d = x; double get() { return d; public MyType(int i1, double d1, char c1){ i = i1; d = d1; c = c1; import mypackage.mytype; public class AnotherType { public static void main(string [ ]args){ MyType m = new MyType(1, 1.0, a ); int i = m.i; double d = m.d; char c = m.c; m.set(2); System.out.println(m.get());

访问控制 private 类的成员被标识为 private, 则除了该类自身外, 任何类不能访问改成员

访问控制 private package mypackage; public class MyType { private int i; private double d; private char c; private void set(double x) { d = x; private double get() { return d; public MyType(int i1, double d1, char c1){ i = i1; d = d1; c = c1; public static void main(string []args){ MyType m = new MyType(1, 1.0, 'a'); m.i = 2; System.out.println(m.get()); import mypackage.mytype; public class AnotherType { public static void main(string [ ]args){ MyType m = new MyType(1, 1.0, a ); int i = m.i; double d = m.d; char c = m.c; m.set(2); System.out.println(m.get()); Access Denied!

访问控制 private 同一类的不同对象 class B { private int i; public B(int k) {i = k; public class A{ private int i; public A(int k) {i=k; public static void main(string args[]){ A a1 = new A(10); A a2 = new A(11); B b1 = new B(10); B b2 = new B(11); System.out.println(a1.i+a2.i); System.out.println(b1.i+b2.i);

访问控制 private 构造函数 无法创建该类的对象 package mypackage; public class MyType { private int i; private double d; private char c; private void set(double x) { d = x; private double get() { return d; private MyType(int i1, double d1, char c1){ i = i1; d = d1; c = c1; public static void main(string []args){ MyType m = new MyType(1, 1.0, 'a');

访问控制 private 构造函数 : 统计该类有多少对象 package mypackage; public class MyType { private int i; private double d; private char c; private void set(double x) { d = x; private double get() { return d; private MyType(int i1, double d1, char c1){ i = i1; d = d1; c = c1; public static int count = 0; public static MyType makemytype(int i1, double d1, char c1){ count++; return new MyType(i1, d1, c1); import mypackage.mytype; public class AnotherType { public static void main(string [ ]args){ //MyType m = new MyType(1, 1.0, a ); MyType m = MyType.makeMyType(1, 1.0, a ); MyType n = MyType.makeMyType(1, 1.0, a ); System.out.println(MyType.count);

访问控制 private 构造函数 : 该类只有一个对象 package mypackage; public class MyType { private int i; private double d; private char c; public void set(double x) { d = x; public double get() { return d; private MyType(int i1, double d1, char c1){ i = i1; d = d1; c = c1; private static MyType instance= null; public static MyType getinstance(){ If (instance == null) Instance = new MyType(1, 1.0, a ); return instance; import mypackage.mytype; public class AnotherType { public static void main(string [ ]args){ MyType m = MyType.getInstance(); m.set(2); MyType n = MyType.getInstance(); System.out.println(n.get()); 单件模式 (Singleton) 设计模式

访问控制 protected 继承 Shape draw(); erase(); move(); getcolor(); setcolor(); class Shape { private int width; private int hieght; protected int data; public void draw() { public void earse() { public void move() {. class Triangle extend Shape{ public void flipvertical() { data public void fliphorizontal() { data Triangle Circle Square flipvertical(); fliphorizontal(); draw();

访问控制 类成员的访问控制 package access, private, public protected 类的访问控制 package access, public

访问控制 public class 每个.java 文件包含一个 public class 该 class 的名字等于.java 文件名 package access class 每个.java 文件中除去 public class 外, 其他的 class 为 package access

访问控制 package mypackage; public class MyType { int i; double d; char c; public void set(double x) { d = x; public double get() { return d; public MyType(int i1, double d1, char c1){ i = i1; d = d1; c = c1; class PAClass{ public PAClass() { System.out.println( PA class ); package mypackage; public class AnotherType { public static void main(string [ ]args){ MyType m = new MyType(1, 1.0, 'a'); PAType p = new PAType();

MyType Revisited 访问控制 package mypackage; public class MyType { private int i; private double d; private char c; public void set(double x) { d = x; public double get() { return d; public MyType(int i1, double d1, char c1){ i = i1; d = d1; c = c1; public static void main(string []args){ MyType m = new MyType(1, 1.0, 'a'); System.out.println(m.get());

封装 封装 (Encapsulation) 访问控制的设计 Public 提供服务, 稳定 修改 public 成员将影响用户程序 Private 提供辅助, 易变 修改 private 成员是安全的 Separate things that change from things that stay the same.

封装 封装 (Encapsulation) 在满足需求的情况下, 接口尽量简单 在可能的情况下尽量使用 private

封装 C 语言的封装 Header fle static and extern