类的封装继承和多态9_第1页
类的封装继承和多态9_第2页
类的封装继承和多态9_第3页
类的封装继承和多态9_第4页
类的封装继承和多态9_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java程序设计实用教程(第4版) 1面向过程和面向对象的编程面向过程和面向对象的编程Java程序设计实用教程(第4版) 2面向过程:面向过程: 多人协作,很难上手,需熟悉代码多人协作,很难上手,需熟悉代码 管理代码麻烦,不易扩充,难维护管理代码麻烦,不易扩充,难维护 软件危机,管理上有难度。软件危机,管理上有难度。面向对象:面向对象: 采用结构体方式管理变量采用结构体方式管理变量 扩展了结构体,带类的扩展了结构体,带类的C(c+) 也称为是,源于也称为是,源于C+Java程序设计实用教程(第4版) 3面向对象的本质:面向对象的本质: 以类的方式组织代码以类的方式组织代码 以对象的方式封装数据

2、以对象的方式封装数据 所以学好所以学好JAVA就两件事:就两件事: (1)学别人写好的类)学别人写好的类 (2)写自己的类)写自己的类Java程序设计实用教程(第4版) 4第第3章章 类的封装、继承和多态类的封装、继承和多态 3.1 类和对象类和对象 3.2 类的封装性类的封装性 3.3 类的继承性类的继承性 3.4 类的多态性类的多态性 3.5 类的抽象性类的抽象性Java程序设计实用教程(第4版) 5第第3章章 类的封装、继承和多态类的封装、继承和多态内容和要求:内容和要求:1.类的声明和封装,对象引用模型。类的声明和封装,对象引用模型。2.类的继承原则,多态(重载和覆盖)。类的继承原则,

3、多态(重载和覆盖)。3.抽象类和抽象方法,最终类和最终方法。抽象类和抽象方法,最终类和最终方法。重点:重点:类的封装、继承、多态和抽象性。类的封装、继承、多态和抽象性。难点:难点:继承,运行时多态。继承,运行时多态。Java程序设计实用教程(第4版) 63.1 类和对象类和对象类类(class)是既包括数据又包括作用于数)是既包括数据又包括作用于数据的一组操作的封装体。据的一组操作的封装体。对象对象(object)是类的)是类的实例实例(instance)。)。类具有封装性、继承性、多态性和抽象性。类具有封装性、继承性、多态性和抽象性。Java程序设计实用教程(第4版) 73.1.1 类类1.

4、声明类声明类类声明类声明 成员变量的声明成员变量的声明; 成员方法的声明及实现成员方法的声明及实现;修饰符修饰符 class 类类 extends 父类父类 implements 接口列表接口列表Java程序设计实用教程(第4版) 83.1.1 类类2.声明成员变量和成员方法声明成员变量和成员方法修饰符修饰符 返回值类型返回值类型 方法方法(参数列表参数列表) throws 异常类异常类 语句序列语句序列; return 返回值返回值;Java程序设计实用教程(第4版) 9日期类日期类MyDate public class MyDate /类声明类声明 int year, month, day

5、; /成员变量成员变量 void set(int y, int m, int d)/成员方法,设置日期值成员方法,设置日期值 year = y; month = m; day = d; Java程序设计实用教程(第4版) 103. 成员方法重载成员方法重载一个类中可以声明多个同名、但参数列表不同的成员方法,称一个类中可以声明多个同名、但参数列表不同的成员方法,称为类的为类的成员方法重载成员方法重载,为一种功能提供多种实现。重载方法,为一种功能提供多种实现。重载方法之间必须以不同的参数列表(数据类型、参数个数、参数次之间必须以不同的参数列表(数据类型、参数个数、参数次序)来区别。序)来区别。 v

6、oid set(int y, int m, int d) void set(int m, int d) /重载方法,参数个数不同重载方法,参数个数不同void set(int d) void set(MyDate d) /重载方法,参数的数据类型不同重载方法,参数的数据类型不同void set(int m, int d, int y) /语法错,语法错,参数列表相同参数列表相同void set(int y=0, int m=0, int d=0) /语法错,语法错,参数不能指定默认参数不能指定默认值值Java程序设计实用教程(第4版) 113.1.2 对象对象1.声明对象声明对象类类 对象对象

7、2.创建实例创建实例对象对象 = new 类的构造方法类的构造方法(参数列表参数列表) 3.引用对象的成员变量和调用对象方法引用对象的成员变量和调用对象方法对象对象.成员变量成员变量对象对象.成员方法成员方法(参数列表参数列表)Java语言自动释放对象。语言自动释放对象。Java程序设计实用教程(第4版) 12例如:例如: P64 3-1Java程序设计实用教程(第4版) 134. 对象的引用模型对象的引用模型Java程序设计实用教程(第4版) 143.2 类的封装性类的封装性1.3.2.1 构造方法与析构方法构造方法与析构方法2.3.2.2 对象的引用和运算对象的引用和运算 3.3.2.3

8、访问控制访问控制 4.3.2.4 静态成员静态成员5.3.2.5 浅拷贝与深拷贝浅拷贝与深拷贝 Java程序设计实用教程(第4版) 153.2.1 构造方法与析构方法构造方法与析构方法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);2.默认构造方法默认构造方法public MyDate()Java程序设计实用教程(第4版) 163.拷贝构造方法拷贝构造方法public

9、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程序设计实用教程(第4版) 174. 构造方法重载构造方法重载public MyDate(int y, int m, int d)public MyDate() this(1970,1,1)

10、;public MyDate(MyDate d) this(d.year, d.month, d.day);Java程序设计实用教程(第4版) 185. 析构方法析构方法public void finalize() /析构方法析构方法 语句序列语句序列;Java程序设计实用教程(第4版) 193.2.2 对象的引用和运算对象的引用和运算 1.this引用引用指代对象本身指代对象本身nthis访问本类的成员变量和成员方法访问本类的成员变量和成员方法nthis.成员变量成员变量nthis.成员方法成员方法(参数列表参数列表)调用本类重载的构造方法调用本类重载的构造方法nthis(参数列表参数列表)

11、3.instanceof对象运算符对象运算符nd instanceof MyDate Java程序设计实用教程(第4版) 202. 对象的关系运算与比较相等对象的关系运算与比较相等Java程序设计实用教程(第4版) 213.2.3 访问控制访问控制 1.类的访问权限:只有类的访问权限:只有public和缺省两种和缺省两种 。public class MyDateclass MyDate_ex2.类中成员的访问权限类中成员的访问权限权限修饰符权限修饰符同一类同一类同一包同一包不同包的子类不同包的子类所有类所有类public(公有公有) protected(保护保护) 缺省缺省 private(私

12、有私有) Java程序设计实用教程(第4版) 223.2.4 静态成员静态成员public class MyDate private int year,month,day; /实例成员变量实例成员变量 private static int thisYear=2012; /静态成员变量静态成员变量 static /静态成员变量初始化静态成员变量初始化 thisYear=2012; public static int getThisYear() /静态成员方法静态成员方法 return thisYear; /访问静态成员变量访问静态成员变量 Java程序设计实用教程(第4版) 23【例例3.2】封

13、装的日期类封装的日期类。图图3.3 实例成员变量与静态成员变量的存储结构不同实例成员变量与静态成员变量的存储结构不同 Java程序设计实用教程(第4版) 243.3 类的继承性类的继承性3.3.1 由继承派生类由继承派生类3.3.2 继承原则及作用继承原则及作用 3.3.3 子类的构造方法子类的构造方法Java程序设计实用教程(第4版) 253.3.1 由继承派生类由继承派生类修饰符修饰符 class 类类 extends 父类父类 implements 接口列表接口列表public class Student extends Person String speciality; /专业专业【例

14、例3.4】 Student类继承类继承Person类。类。 Java程序设计实用教程(第4版) 263.3.2 继承原则及作用继承原则及作用 1.继承原则继承原则子类继承父类的成员变量子类继承父类的成员变量子类继承父类除构造方法以外的成员方法子类继承父类除构造方法以外的成员方法子类不能继承父类的构造方法子类不能继承父类的构造方法子类可以增加成员,可以重定义从父类继承来的子类可以增加成员,可以重定义从父类继承来的成员,但不能删除它们。成员,但不能删除它们。Java程序设计实用教程(第4版) 272. 继承的作用继承的作用单继承,单继承,树结构树结构Java程序设计实用教程(第4版) 283. O

15、bject类类public class Object public Object() /构造方法构造方法 public String toString() /描述对象描述对象 public boolean equals(Object obj)/比较对象相等比较对象相等 protected void finalize() throws ThrowableJava中的类都是中的类都是Object的子类的子类public class Person extends Object思考题:思考题:Object()有什么作用?有什么作用? Object obj = new Object();Java程序设计

16、实用教程(第4版) 294. 子类对父类成员的访问权限子类对父类成员的访问权限子类不能访问父类的私有成员(子类不能访问父类的私有成员(private)。)。子类能够访问父类的公有成员(子类能够访问父类的公有成员(public)和保)和保护成员(护成员(protected)。)。子类对父类的缺省权限成员的访问控制,以包子类对父类的缺省权限成员的访问控制,以包为界分两种情况,可以访问当前包中为界分两种情况,可以访问当前包中Java程序设计实用教程(第4版) 303.3.3 子类的构造方法子类的构造方法1.使用使用super()调用父类构造方法调用父类构造方法super(参数列表参数列表)publi

17、c Student(String name, MyDate birthday, String spec) super(name, birthday); /调用父类同参数的构造方法调用父类同参数的构造方法 this.speciality = spec;2.默认执行默认执行super()public Student() /Java提供的默认构造方法提供的默认构造方法 super(); /调用父类构造方法调用父类构造方法Person()Java程序设计实用教程(第4版) 31子类的构造方法没有调用子类的构造方法没有调用super()或或this(),将默认执行,将默认执行super() public

18、 Person() super(); /调用父类构造方法调用父类构造方法Object()public Student() super(); /默认调用默认调用 speciality=; Java程序设计实用教程(第4版) 32图图3.7 子类构造方法逐个执行子类构造方法逐个执行成员对象和父类的构造方法成员对象和父类的构造方法 Java程序设计实用教程(第4版) 33super引用引用1.调用父类的构造方法调用父类的构造方法super(参数列表参数列表)2.引用父类同名成员引用父类同名成员子类隐藏父类成员变量子类隐藏父类成员变量nsuper.成员变量成员变量子类覆盖父类成员方法子类覆盖父类成员方

19、法nsuper.成员方法成员方法(参数列表参数列表)Java程序设计实用教程(第4版) 343.4 类的多态性类的多态性1.3.4.1 子类重定义父类成员子类重定义父类成员2.3.4.2 类型的多态类型的多态3.3.4.3 编译时多态和运行时多态性编译时多态和运行时多态性4.3.4.4 多态的方法实现多态的方法实现Java程序设计实用教程(第4版) 35 3.4.1 子类重定义父类成员子类重定义父类成员1.子类子类隐藏隐藏父类成员变量父类成员变量2.子类覆盖父类成员方法子类覆盖父类成员方法覆盖覆盖(override)是指子类声明并实现父类中的是指子类声明并实现父类中的同名方法并且参数列表也完全

20、相同。同名方法并且参数列表也完全相同。3.子类继承并重载父类成员方法子类继承并重载父类成员方法重载重载(overload)是指同一个类中的多个方法可)是指同一个类中的多个方法可以同名但参数列表必须不同。以同名但参数列表必须不同。Java程序设计实用教程(第4版) 36【例例3.5】 Student类重定义从父类重定义从父类继承来的成员。类继承来的成员。Java程序设计实用教程(第4版) 373.4.2 类型的多态类型的多态1.子类对象即是父类对象子类对象即是父类对象new Student() instanceof Person /truenew Person() instanceof Stud

21、ent /false 2.父类对象引用子类实例父类对象引用子类实例Person p = new Student(); /赋值相容赋值相容Student s = new Person(); /语法错语法错Object obj = new Person(); /赋值相容赋值相容Java程序设计实用教程(第4版) 383.4.3 编译时多态和运行时多态性编译时多态和运行时多态性1.编译时多态性编译时多态性方法重载都是编译时多态。方法重载都是编译时多态。 方法覆盖表现出两种多态性,当对象引用本类实例方法覆盖表现出两种多态性,当对象引用本类实例时,为编译时多态,否则为运行时多态。时,为编译时多态,否则为运行时多态。 Person p = new Person();p.toString() /执行执行Person类的类的t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论