已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年及未来5年中国数控电火花机行业市场运行现状及投资战略研究报告
- 2025至2030家庭无线音乐系统行业项目调研及市场前景预测评估报告
- 创新教案设计方法探索
- 2025-2030中国医药行业药物警戒体系建设与风险管理报告
- 未来五年农林牧渔业专业技术服务行业直播电商战略分析研究报告
- 未来五年油耗测量仪器市场需求变化趋势与商业创新机遇分析研究报告
- 未来五年冷冻鱼行业跨境出海战略分析研究报告
- 未来五年气力卸船机行业市场营销创新战略制定与实施分析研究报告
- 未来五年檀香扇市场需求变化趋势与商业创新机遇分析研究报告
- 新版基本公共卫生服务项目培训慢性病部分教案
- 啤酒厂全套安全生产操作规程
- 基于PLC的霓虹灯控制系统设计
- 机电安装监理质量控制要点-机电工程质量控制要点共课件
- 【钢铁冶炼】-锌冶炼中汞的回收利用
- 泌尿科品管圈提高携带双J管患者的健康教育落实率
- 艺术课程标准(2022年版)
- 泥玩具教学课件
- 神经系统体格检查培训课件
- GB/T 3836.4-2021爆炸性环境第4部分:由本质安全型“i”保护的设备
- 2023年银川阅海湾产业发展有限公司招聘笔试题库及答案解析
- 四年级上册科学试题-期中测试题 教科版(含答案)
评论
0/150
提交评论