




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,对象和类(续),对象的创建 对象的使用 对象的释放 对象的访问,2,对象的创建,对象成员(变量和方法) 静态(static)成员: 属于类 实例成员: 属于对象 创建对象/实例化对象new 例1: Apple a = new Apple(); (创建对象) 例2: Apple a; (对象的说明) a = new Apple(); (实例化对象) 对象的实例化通过构造方法(constructor)来实现 构造方法的名字与类名相同 构造方法没有返回值 构造方法可以有多个,构成方法的重载(overload),3,例: 对象的实例化和初始化,计算结果: 10 20 20 50 10 20,对象的创建,4,默认构造方法 例 class Apple int color; Apple a = new Apple(); 对象实例的判断: null 例 Apple a; if (a = null) System.out.println(“Day dream”);,对象的创建,运行时系统自动赋予 一个空构造函数 如 public Apple() ; ,5,再谈构造方法,对象的创建,class MyTest MyTest (boolean b) public static void main (String args) /MyTest m1 = new MyTest(); MyTest m2 = new MyTest(false); ,class MyTest MyTest (boolean b) MyTest () public static void main (String args) MyTest m1 = new MyTest(); MyTest m2 = new MyTest(false); ,运行时系统自动赋予一个空构造方法, 仅仅当该类没定义构造方法的情况下,6,对象和类(续),对象的创建 对象的使用 对象的释放 对象的访问,7,对象的使用,通过对象引用对象的成员变量和成员方法,class Square int a, h; Square () a = 10; h = 20; Square(int x, int y) a = x; h = y; Square(Square r) a = r.width(); h = r.height(); int width() return a; int height() return h; void set(int x, int y) a=x; h =y; ,q1.set(30, 40); q1.a = 30; q1.h = 40; 目的相同 第一方式更安全、 更面向对象(数据封装) 避免直接操纵变量,8,对象的使用,引用对象的变量 格式: 对象名.变量名 引用对象的方法 格式: 对象名.方法名 例1 Vector v = new Vector(); v.addElement(“s1”); 例2 int a= 1, 2, 3, 4, 5; int size = a.length; 例3 System.out.println();,9,对象和类(续),对象的创建 对象的使用 对象的释放 对象的访问,10,对象的释放,将对象从内存中清除 内存的管理(枯燥、容易出错) 垃圾回收(Garbage Collection),The Java platform allows you to create as many objects as you want (limited, of course, by what your system can handle), and you dont have to worry about destroying them. The Java runtime environment deletes objects when it determines that they are no longer being used. This process is called garbage collection.,11,对象的释放,垃圾搜集器(Garbage Collector) 周期性地释放不再被引用的对象,自动完成 手动完成, System.gc(); (java.lang.System中) public static void gc() - Runs the garbage collector.,12,对象和类(续),对象的创建 对象的使用 对象的释放 对象的访问,13,对象的访问,访问对象的私有(private)成员 通过定义一个公共方法来实现,class Student private String name; private String id; Student(String s1, String s2) name = s1; id = s2; String getName() return name; void setName(String s) name = s; ,Student st = new Student(“李忠”, “001”); String s = st.getName(); st.setName(“李晓”); s = st.getName(); ,14,对象的访问,对象作为方法的参数 访问权限修饰符 方法返回类型 方法名(参数) throws 异常名 方法体; 参数: 类型 变量名, 类型: 基本数据类型/复合类型(对象) 参数的传递 Pass by value,15,例 对象用作方法的参数,对象的访问,D:java Test s点的坐标:2,3 s点的坐标:6,8,16,例 对象用作方法的参数,对象的访问,D:java Test s点的坐标:2,3 s点的坐标:6,8,17,例 对象用作方法的参数,对象的访问,D:java Test s点的坐标:2,3 s点的坐标:6,8,18,对象的访问,对象的访问 对象作为方法的返回值 访问权限修饰符 方法返回类型 方法名(参数) throws 异常名 方法体; 返回类型 有返回值: 基本数据类型/复合类型(对象) 无返回值: void,19,对象的访问,对象作为方法的返回值 例: 求两点坐标之间的中点坐标 思路: (x1, y1) 和(x2, y2)(x, y) x=(x1+x2)/2, y=(y1+y2)/2 Spot s1 = new Spot(2, 3); Spot s2 = new Spot(4, 5); Spot s = s1.midSpot(s2);,20,例 对象用作方法的返回值,对象的访问,D:java Test s1点的坐标: 3.0,5.0 s2点的坐标: 6.0,8.0 中点的坐标: 4.5,6.5,21,对象的访问,数组: 类型相同的一列元素 作为一个对象看待,public class ArrayDemo public static void main(String args) int anArray = new int10; for (int i = 0; i anArray.length; i+) anArrayi = i; System.out.print(anArrayi + “ “); System.out.println(); ,22,对象的访问,对象数组,class Student private String name; private String id; Student (String s1, String s2) name = s1; id = s2; String getName() return name; void setName (String s) name = s; void display () System.out.println(name + “ ”+id); ,Student st = new Student10; for (int i = 0; i st.length; i+) sti = new Student(); for (int i = 0; i st.length; i+) sti.display(); ,23,对象的访问,对象作为另一个对象的成员变量 一个对象中包含另一个对象,组合关系,class MobilePhone private String type; private Watch w; MobilePhone (String s) type = s; void setWatch(Watch a) w = a; long getTime () return w.getTime(); ,class Watch long getTime() return System.currentTimeMillis(); ,MobilePhone mp = new MobilePhone(“nokia”); Watch w = new Watch(); mp.setWatch(w); long l = mp.getTime();,public static long currentTimeMillis() the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC,24,对象的访问,关键词 this this指当前对象 应用1: 加强程序可读性(this可有可无),class Demo1 double x, y; Demo1(double i, double j) this.x=i; this.y=j; double ave() return (x+y)/2; public static void main(String args) Demo1 d = new Demo1(3, 4); System.out.println(d.ave(); ,class Demo2 int x, y, z; Demo2(int a, int b) x =a; y=b; this.swap(a, b); void swap(int a, int b) int t; if (x y) t=x; x=y; y=t; ,25,对象的访问,关键词 this this指当前对象 应用2: 对同一个对象执行多次方法调用,class Leaf int i = 0; Leaf increment() i+; return this; void print() System.out.println(“i=” + i); public static void main(String args) Leaf x = new Leaf(); x.increment().increment().increment().print(); ,D:java Leaf i=3,26,对象的访问,关键词 this this指当前对象 应用3: 在一个构造函数中调用另一个构造函数,class Flower String
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024河南省周口市卫生职业中等专业学校工作人员招聘考试及答案
- 2024海口经济学院附属艺术学校工作人员招聘考试及答案
- 美术教师劳动合同
- 租赁设备还款合同范本
- 家居装修合同注意事项
- 电子商品购销合同范本
- 重点工程项目施工合同协议书
- 电路理论试题库与答案
- 植物模拟练习题及答案
- 小学二年级数学口算速算试题
- 骨转移瘤课件
- 护士注册健康体检表下载【可直接打印版本】
- 核心素养视角下教师专业发展课件
- 污水处理培训课件
- 初中语文八年级下册第三单元综合性学习古诗苑漫步-综合性学习《古诗苑漫步》教案
- 中国十大阶层的划分课件
- 高中英语各种教材词组汇总大全(超级实用)
- 内燃机机油泵转子系列参数
- 远程视频会议系统建设方案课件
- 四十二手眼图(经典珍藏版)
- 通用横版企业报价单模板
评论
0/150
提交评论