




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计实用教程(第3版),第3章 类的封装、继承和多态,3.1 类和对象 3.2 类的封装性 3.3 类的继承性 3.4 类的多态性 3.5 类的抽象性,Java程序设计实用教程(第3版),在面向对象概念中,类是数据和对数据操作的封装体。 类具有封装性、继承性和多态 性。 封装性是面向对象方法的基础. 继承性是面向对象方法的技术关键 多态性提供了面向 对象方法设计的灵活性。这三个面向对象的核心特性为应用程序构建可重用软件系统奠定了基础。,Java程序设计实用教程(第3版),3.1.1 类,类是既包括数据又包括作用于数据的一组操作的封装体。 类中的数据称为成员变量,类中对数据的操作称为成员方法。 类具有封装性、继承性、多态性和抽象性。,Java程序设计实用教程(第3版),3.1.1 类,声明类 类声明 成员变量的声明; 成员方法的声明及实现; 修饰符 class 类 extends 父类 implements 接口列表,Java程序设计实用教程(第3版),3.1.1 类,声明成员变量和成员方法 成员变量 修饰符 static final transient 数据类型 变量; 关键字static用于声明类成员变量, final用于声明常量,transient用于声明临时变量。 成员方法 修饰符 返回值类型 方法(参数列表) throws 异常类 语句序列; return 返回值; 成员方法重载,Java程序设计实用教程(第3版),3.1.2 对象,对象是类的实例。 对象能获取并保存类的一个实例。 对象是动态的,每个对象都有自己的生存周期,都会经历一个从创建、运行到消亡的变化过程。,Java程序设计实用教程(第3版),3.1.2 对象,声明对象 类 对象 创建实例 对象 = new 类的构造方法(参数列表) 注意:类的构造方法是类中与类同名的特殊成员方法,用于创建类的实例并初始化对象。每个类都有构造方法,若类没有声明构造方法,则Java会自动为该类生成一个无参数的构造方法。,Java程序设计实用教程(第3版),3.1.2 对象,引用对象的成员变量和调用对象方法 对象.成员变量 对象.成员方法(参数列表) Java语言自动释放对象。 【例3.1】声明日期类及使用日期对象。 对象与基本数据类型变量有一点重要的不同之处,就是对象能够调用方法,而变量不能 。,Java程序设计实用教程(第3版),4. 对象的引用模型,Java程序设计实用教程(第3版),5. 对象的关系运算与比较相等,Java程序设计实用教程(第3版),3.2 类的封装性,封装性是面向对象的核心特征之一,它提供一种信息隐藏技术。 类的封装性包含两层含义: 一是将数据和对数据的操作组合起来构成类,类是一个不可分割的独立单位。(实现软件模块化设计) 二是实现信息隐藏,类要提供与外部联系的方法,同时又要尽可能隐藏类的实现细节 。(实现设计和使用分离),Java程序设计实用教程(第3版),3.2 类的封装性,3.2.1 构造方法 3.2.2 this引用和instanceof对象运算符 3.2.3 访问控制 3.2.4 静态成员 3.2.5 析构方法 3.2.6 浅拷贝与深拷贝,Java程序设计实用教程(第3版),3.2.1 构造方法,声明及调用构造方法 public class MyDate public MyDate(int y, int m, int d) /声明构造方法 /构造方法与类同名 year = y; month = m; day = d; MyDate d = new MyDate(2009,7,18); /构造方法返回该类的一个实例 默认构造方法 public MyDate(),Java程序设计实用教程(第3版),3.拷贝构造方法(参数是该类对象),public MyDate(MyDate d) year = d.year; month = d.month; day = d.day; 调用语句如下: MyDate d1 = new MyDate(2009,7,16); MyDate d2 = new MyDate(d1); 第2句功能相当于以下两句: MyDate d2 = new MyDate(); d2.set(d1);,Java程序设计实用教程(第3版),4. 构造方法重载,public MyDate(int y, int m, int d) public MyDate() public MyDate(MyDate d),Java程序设计实用教程(第3版),3.2.3 this引用和instanceof对象运算符,this引用 指代对象本身 this 访问本类的成员变量和成员方法 this.成员变量(局部变量或形参与成员变量同名时,必须用this引用成员变量) this.成员方法(参数列表) 调用本类重载的构造方法 this(参数列表)(构造方法中this必须是首句) instanceof对象运算符 d instanceof MyDate /运算结果是boolean型,Java程序设计实用教程(第3版),类的访问权限:只有public和缺省两种 。 public class MyDate(所有类能访问,文件中只有一个) class MyDate_ex (同一包的类能访问) 类中成员的访问权限 public说明该类成员可被所有类的对象访问。 protected说明该类成员能被同一类中的其他成员或其子类成员,保护成员在子类和非子类中具有不同的访问权限。 缺省以包为界划定访问权限范围。 private说明该类成员只能被同一类中的其他成员访问。,3.2.4 访问控制,Java程序设计实用教程(第3版),声明set()和get()方法存取对象的属性 (尤其对私有变量),3.2.4 访问控制,Java程序设计实用教程(第3版),3.2.5 静态成员,public class MyDate private int year,month,day; /实例成员变量 private static int thisYear; /静态成员变量 static /静态成员变量初始化 thisYear=2009; public static int getThisYear() /静态成员方法 return thisYear; /访问静态成员变量 ,Java程序设计实用教程(第3版),【例3.2】封装的日期类。,图3.3 实例成员变量与静态成员变量的存储结构不同,Java程序设计实用教程(第3版),3.2.5 析构方法,public void finalize() /析构方法 语句序列; 析构方法( destructor)是类中一种特殊的成员方法,用于释放类的实例并执行特定操作。 Java语言的资源回收机制能够自动释放不再被使用的对象。 类只能有一个析构方法。,Java程序设计实用教程(第3版),3.2.6 浅拷贝与深拷贝,浅拷贝,Java程序设计实用教程(第3版),2. 深拷贝,public Person(Person p) this(, new MyDate(p.birthday); 【例3.3】 使用对象作为成员变量并实现深拷贝的Person类。,Java程序设计实用教程(第3版),3.3 类的继承性,3.3.1 由继承派生类 3.3.2 继承原则及作用 3.3.3 子类的构造方法,Java程序设计实用教程(第3版),3.3.1 由继承派生类,修饰符 class 类 extends 父类 implements 接口列表 public class Student extends Person String speciality; /专业 【例3.4】 Student类继承Person类。,Java程序设计实用教程(第3版),3.3.2 继承原则及作用,继承原则 子类继承父类的成员变量 子类继承父类除构造方法以外的成员方法 子类不能继承父类的构造方法 子类可以增加成员,可以重定义从父类继承来的成员,但不能删除它们。,Java程序设计实用教程(第3版),2. 继承的作用,子类对象即是父类对象。 继承是实现软件可重用性的一种重要方式。,Java程序设计实用教程(第3版),3. Object类,public class Object public Object() /构造方法 public String toString() /描述对象 public boolean equals(Object obj)/比较对象相等 protected void finalize() throws Throwable Java中的类都是Object的子类,都继承了它的成员。,Java程序设计实用教程(第3版),4. 子类对父类成员的访问权限,子类不能访问父类的私有成员(private)。 子类能够访问父类的公有成员(public)和保护成员(protected)。 子类对父类的缺省权限成员的访问控制,以包为界分两种情况,可以访问当前包中。,Java程序设计实用教程(第3版),3.3.3 子类的构造方法,可以调用父类的一个构造方法初始化从父类继承的成员变量。 使用super()调用父类构造方法 super(参数列表) public Student(String name, MyDate birthday, String spec) super(name, birthday); /调用父类同参数的构造方法 this.speciality = spec; 默认执行super() 类没有声明构造方法时,Java提供的默认构造方法调用super(); 子类声明了构造方法,但没有调用this或super。,Java程序设计实用教程(第3版),3.4 类的多态性,3.4.1 什么是多态 3.4.2 运行时多态性,Java程序设计实用教程(第3版),3.4 类的多态性,多态性是面向对象的核心特征之一。类的多态性提供类中方法设计的灵活性和执行多样性。 多态的特别之处是,使程序能够处理类层次 中共享同一超类的对象,就好像它们都是超类的对象一样 。 多态(polymorphism):一个名字可具有多种语义。 多态主要有方法的多态和类型的多态。,Java程序设计实用教程(第3版),3.4.1 子类重定义从父类继承来的成员,子类隐藏父类成员变量 子类覆盖父类成员方法 覆盖(override)是指子类声明并实现父类中的同名方法并且参数列表也完全相同。 子类继承并重载父类成员方法 重载(overload)是指同一个类中的多个方法可以同名但参数列表必须不同。 【例3.5】 Student类重定义从父类继承来的成员。,Java程序设计实用教程(第3版),super引用,调用父类的构造方法 super(参数列表) 引用父类同名成员 子类隐藏父类成员变量 super.成员变量 子类覆盖父类成员方法 super.成员方法(参数列表),Java程序设计实用教程(第3版),3.4.2 类型的多态,子类对象即是父类对象(isA) new Student() instanceof Person /true new Person() instanceof Student /false 父类对象引用子类实例 Person p=new Student(); Object obj = new Person(); public int olderThen(Person p) p1.olderThen(s1) s1.olderThen(p1),Java程序设计实用教程(第3版),3.4.3 编译时多态和运行时多态性,编译时多态性 方法重载都是编译时多态。 方法覆盖中当对象引用本类实例时,为编译时多态。 Person p1 = new Person(“李小明“, new MyDate(1979,3,15); p1.toString() /执行Person类的toString() Student s1= new Student(p1,“计算机“); s1.toString() /执行Student类的toString(),Java程序设计实用教程(第3版),2. 运行时多态性,Person p2 = new Student(“张小莉“, new MyDate(1989,1,5);/父类对象引用子类实例 p2.toString() /执行Student类的toString(),Java程序设计实用教程(第3版),3.4.4 多态的方法实现,多态的toString()方法 Object类声明: public String toString() /返回当前对象的信息字符串 return getClass().getName() + “ + Integer.toHexString(hashCode(); ,Java程序设计实用教程(第3版),2. 多态的equals()方法,Object类声明: public boolean equals(Object obj) return this = obj; ,Java程序设计实用教程(第3版),【例3.6】在对象数组中查找。,对象数组及计数 运行时多态性体现 System.out.println(tablei.toString(); 注意例3.6的运行结果。,Java程序设计实用教程(第3版),3.5 类的抽象性,3.5.1 用继承刻画包含关系 3.5.2 抽象类 3.5.3 最终类,Java程序设计实用教程(第3版),3.5.1 用继承刻画包含关系,Java程序设计实用教程(第3版),3.5.2 抽象类,声明抽象类与抽象方法 public abstract class ClosedFigure /闭合图形抽象类 public abstract double area(); /计算面积,抽象方法,以分号“;“结束 ,Java程序设计实用教程(第3版),3.5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 30544.3-2025纳米科技术语第3部分:碳纳米物体
- 行政法学核心概念与试题及答案解析
- 石墨烯火灾应急预案(3篇)
- 高考作文考试常考题目及答案总结
- 高考作文历练成长的试题与答案
- 高考作文勇气与担当的试题及答案
- 行政法学中多元化的实践方法探讨试题及答案
- 消火灾应急预案超声科(3篇)
- 别墅小区火灾应急预案(3篇)
- 2025年软件设计师试题及答案重要提醒
- 肿瘤化疗病人的健康教育【完美版】
- 燃气公司绩效考核评价表
- 脾破裂应急预案
- 2024年全国职业院校技能大赛中职组(母婴照护赛项)考试题库(含答案)
- 附件7:《号苗报告》
- 腹腔镜风险评估及应急预案
- GB/T 23576-2024抛喷丸设备通用技术规范
- 我的家乡安徽蚌埠城市介绍课件
- 烫发基础知识课程
- 2024年高级餐饮行业运营管理及服务知识考试题库(附含答案)
- 广东省佛山市重点中学2025届高考临考冲刺历史试卷含解析
评论
0/150
提交评论