面向对象的核心特性精选文档.ppt

上传人:石*** 文档编号:52095291 上传时间:2022-10-21 格式:PPT 页数:39 大小:1.68MB
返回 下载 相关 举报
面向对象的核心特性精选文档.ppt_第1页
第1页 / 共39页
面向对象的核心特性精选文档.ppt_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《面向对象的核心特性精选文档.ppt》由会员分享,可在线阅读,更多相关《面向对象的核心特性精选文档.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、面向对象的核心特性面向对象的核心特性Java2程序设计实用教程(第2版)本讲稿第一页,共三十九页3.1 类和对象类和对象1.3.1.1 面向对象基本概念面向对象基本概念2.3.1.2 定义类定义类3.3.1.3 使用对象使用对象本讲稿第二页,共三十九页3.1.1 面向对象基本概念面向对象基本概念1.类与对象类与对象类(类(class)是既包括数据又包括作用于数据的一组操作的)是既包括数据又包括作用于数据的一组操作的封装体。封装体。对象(对象(object)是类的实例()是类的实例(instance)。)。2.类的封装性、继承性和多态性类的封装性、继承性和多态性类的封装性类的封装性类的继承性类的

2、继承性类的多态性类的多态性本讲稿第三页,共三十九页3.1.2 定义类定义类1.声明类声明类类声明类声明 成员变量的声明成员变量的声明;成员方法的声明及实现成员方法的声明及实现;2.声明成员变量声明成员变量修饰符修饰符 class 类类 extends 父类父类 implements 接口列接口列表表public class Date1/类声明类声明 int year,month,day;/声明成员变量声明成员变量本讲稿第四页,共三十九页3.1.2 定义类定义类1.声明成员方法声明成员方法方法声明语法方法声明语法修饰符 返回值类型 方法(参数列表)throws 异常类 语句序列;return 返

3、回值;方法体中的局部变量方法体中的局部变量方法体中用方法体中用return语句返回值语句返回值2.声明声明main方法方法public static void main(String args)【例例3.1】声明日期类。声明日期类。本讲稿第五页,共三十九页3.1.3 使用对象使用对象1.声明对象声明对象类类 对象对象2.对象实例化对象实例化对象对象=new 类的构造方法类的构造方法(参数列表参数列表)Date1 aday=new Date1();3.引用对象的成员变量和调用对象方法引用对象的成员变量和调用对象方法对象对象.成员变量成员变量对象对象.成员方法成员方法(参数列表参数列表)aday.

4、year=2006;/引用对象的成员变量引用对象的成员变量aday.setDate(2006,1,28);/调用对象的方法调用对象的方法abcd.equals(abc)本讲稿第六页,共三十九页3.1.3 使用对象使用对象1.对象的引用模型对象的引用模型本讲稿第七页,共三十九页3.1.3 使用对象使用对象1.方法调用时的参数传递原则方法调用时的参数传递原则基本数据类型参数传递值;基本数据类型参数传递值;引用数据类型参数传递引用。引用数据类型参数传递引用。2.释放对象释放对象Java语言具有资源回收机制,能够跟踪存储单元语言具有资源回收机制,能够跟踪存储单元的使用情况,自动收回不再被使用的资源。的

5、使用情况,自动收回不再被使用的资源。【例例3.2】引用数据类型作为方法的参数和返回值。引用数据类型作为方法的参数和返回值。本讲稿第八页,共三十九页3.2 类的封装性类的封装性1.3.2.1 构造方法与析构方法构造方法与析构方法2.3.2.2 方法的重载方法的重载3.3.2.3 this引用和引用和instanceof对象运算对象运算符符4.3.2.4 类及其成员的访问权限类及其成员的访问权限5.3.2.5 实例成员与类成员实例成员与类成员本讲稿第九页,共三十九页3.2.1 构造方法与析构方法构造方法与析构方法1.构造方法构造方法声明构造方法声明构造方法public class Date2 pu

6、blic Date2(int y,int m,int d)/声明构造方法 /构造方法与类同名,构造方法返回该类的一个实例 year=y;month=m;day=d;nDate2 aday=new Date2(2006,1,28);关于构造方法声明和使用的几点说明关于构造方法声明和使用的几点说明构造方法与成员方法的不同之处构造方法与成员方法的不同之处本讲稿第十页,共三十九页2.析构方法析构方法public void finalize()/析构方法析构方法 语句序列语句序列;本讲稿第十一页,共三十九页3.2.2 方法的重载方法的重载1.重载的含义重载的含义Math.abs()方法声明有方法声明有4

7、种:种:int abs(int a)long abs(long a)float abs(float a)double abs(double a)2.成员方法重载成员方法重载3.构造方法重载构造方法重载Date2 aday1=new Date2();Date2 aday2=new Date2(2006,2,28);本讲稿第十二页,共三十九页图图3.2 使用拷贝构造方法复制对象使用拷贝构造方法复制对象 Date2 aday3=new Date2(aday2);/由已知对象创建新对象由已知对象创建新对象 本讲稿第十三页,共三十九页3.2.3 this引用和引用和instanceof对象运对象运算符算

8、符1.this引用引用指代对象本身指代对象本身nthis访问本类的成员变量和成员方法访问本类的成员变量和成员方法nthis.成员变量nthis.成员方法(参数列表)调用本类重载的构造方法调用本类重载的构造方法nthis(参数列表)2.instanceof对象运算符对象运算符naday instanceof Date2 本讲稿第十四页,共三十九页3.2.4 类及其成员的访问权限类及其成员的访问权限1.类中成员的访问权限类中成员的访问权限2.类的访问权限:只有类的访问权限:只有public和缺省两种和缺省两种。public class Date1 /公有的类公有的类class Date1_ex /

9、默认的类默认的类权限修饰符同一类同一包不同包的子类所有类public(公有)protected(保护)缺省private(私有)本讲稿第十五页,共三十九页【例例3.3】日期类的封装。日期类的封装。1.设计并重载构造方法设计并重载构造方法 2.成员变量设计为私有的访问权限,限制其成员变量设计为私有的访问权限,限制其他类对成员变量的访问他类对成员变量的访问3.成员方法设计为公有的访问权限,提供给成员方法设计为公有的访问权限,提供给其他类使用其他类使用4.使用使用this引用增强程序的可维护性引用增强程序的可维护性5.运行包含运行包含main()方法的类方法的类6.日期类的设计问题讨论日期类的设计问

10、题讨论本讲稿第十六页,共三十九页3.2.5 实例成员与类成员实例成员与类成员1.实例成员变量与类成员变量实例成员变量与类成员变量两者声明时的差别两者声明时的差别public class Person1 String name;/姓名,实例成员变量 int age;/年龄 static int count;/人数,类成员变量两者存储结构的差别两者存储结构的差别两者引用方式的差别两者引用方式的差别本讲稿第十七页,共三十九页图图3.4 实例成员变量与类成员变量的实例成员变量与类成员变量的存储结构不同存储结构不同 本讲稿第十八页,共三十九页2.实例成员方法与类成员方法实例成员方法与类成员方法1.两者声

11、明时的差别两者声明时的差别public static int howMany()/类成员方法类成员方法 return count;/类成员方法只能访问类成员变量类成员方法只能访问类成员变量public static void main(String args)/main方法也是类成员方法方法也是类成员方法2.两者方法体中语句的差别两者方法体中语句的差别在类成员方法体中,不能使用在类成员方法体中,不能使用this引用。引用。3.两者调用方式的差别两者调用方式的差别Person1.howMany();/通过类名调用类成员方法通过类名调用类成员方法p1.howMany();/通过对象调用类成员方法通

12、过对象调用类成员方法本讲稿第十九页,共三十九页【例例3.4】实例成员与类成员。实例成员与类成员。1.类成员的作用和调用类成员的作用和调用2.set方法可以重载,方法可以重载,get方法不能重载方法不能重载3.方法体中的局部变量不能使用修饰符方法体中的局部变量不能使用修饰符4.调用对象的析构方法后,不能再引用对象调用对象的析构方法后,不能再引用对象本讲稿第二十页,共三十九页3.3 类的继承性类的继承性1.3.3.1 什么是继承什么是继承2.3.3.2 定义继承的类定义继承的类3.3.3.3 super引用引用本讲稿第二十一页,共三十九页3.3.1 什么是继承什么是继承1.继承的概念继承的概念由一

13、个已有的类定义一个新类,称为新类继承已有的类。由一个已有的类定义一个新类,称为新类继承已有的类。2.继承的作用继承的作用3.继承原则继承原则子类继承父类的成员变量,包括实例成员变量和类成员变量。子类继承父类的成员变量,包括实例成员变量和类成员变量。子类继承父类除构造方法以外的成员方法,包括实例成员方法和子类继承父类除构造方法以外的成员方法,包括实例成员方法和类成员方法。类成员方法。子类不能继承父类的构造方法。因为父类构造方法创建的是子类不能继承父类的构造方法。因为父类构造方法创建的是父类对象,子类必须声明自己的构造方法,创建子类自己的父类对象,子类必须声明自己的构造方法,创建子类自己的对象。对

14、象。子类能够继承父类的析构方法。子类能够继承父类的析构方法。子类不能删除父类成员。子类不能删除父类成员。子类可以增加自己的成员变量和成员方法。子类可以增加自己的成员变量和成员方法。子类可以重定义父类成员。子类可以重定义父类成员。本讲稿第二十二页,共三十九页图图3.5 类的继承性类的继承性 本讲稿第二十三页,共三十九页3.3.2 定义继承的类定义继承的类1.声明继承的类声明继承的类修饰符修饰符 class 类类 extends 父类父类 implements 接口列表接口列表public class Student1 extends Person1 String speciality;/专业专业

15、本讲稿第二十四页,共三十九页3.3.2 定义继承的类定义继承的类1.Java中的类都是中的类都是Object的子类的子类public class Person1 extends Object2.类的赋值相容性类的赋值相容性子类对象即是父类对象。子类对象即是父类对象。3.子类对象对父类成员的访问权限子类对象对父类成员的访问权限子类对父类的私有成员(子类对父类的私有成员(private)没有访问权限;)没有访问权限;子类对父类的公有成员(子类对父类的公有成员(public)和保护成员)和保护成员(protected)具有访问权限。)具有访问权限。子类对父类中缺省权限成员的访问分两种情况,对同一包中

16、子类对父类中缺省权限成员的访问分两种情况,对同一包中父类的缺省权限成员具有访问权限,而对不同包中父类的缺父类的缺省权限成员具有访问权限,而对不同包中父类的缺省权限成员则没有访问权限。省权限成员则没有访问权限。本讲稿第二十五页,共三十九页3.3.2 定义继承的类定义继承的类1.子类重定义从父类继承来的成员子类重定义从父类继承来的成员子类隐藏父类成员变量子类隐藏父类成员变量子类覆盖父类成员方法子类覆盖父类成员方法子类继承并重载父类成员方法子类继承并重载父类成员方法本讲稿第二十六页,共三十九页3.3.3 super引用引用1.调用父类的构造方法调用父类的构造方法super(参数列表参数列表)2.引用

17、父类同名成员引用父类同名成员子类隐藏父类成员变量子类隐藏父类成员变量nsuper.成员变量子类覆盖父类成员方法子类覆盖父类成员方法nsuper.成员方法(参数列表)本讲稿第二十七页,共三十九页【例例3.5】类的继承性。类的继承性。1.子类继承父类成员子类继承父类成员2.子类对象即是父类对象子类对象即是父类对象3.类之间继承关系的设计原则类之间继承关系的设计原则4.本例存在问题本例存在问题本讲稿第二十八页,共三十九页3.4 类的多态性类的多态性1.3.4.1 什么是多态什么是多态2.3.4.2 运行时多态性运行时多态性本讲稿第二十九页,共三十九页3.4.1 什么是多态什么是多态1.方法的重载方法

18、的重载重载(重载(overload)是指同一个类中的多个方法)是指同一个类中的多个方法可以同名但参数列表必须不同。可以同名但参数列表必须不同。2.方法的覆盖方法的覆盖覆盖(覆盖(override)是指子类声明并实现父类中的)是指子类声明并实现父类中的同名方法并且参数列表也完全相同。同名方法并且参数列表也完全相同。本讲稿第三十页,共三十九页【例例3.6】子类重定义父类成员。子类重定义父类成员。1.两个类两个类声明的声明的成员成员本讲稿第三十一页,共三十九页【例例3.6】子类重定义父类成员。子类重定义父类成员。1.子类隐藏父类成员变量子类隐藏父类成员变量 2.子类覆盖父类成员方法子类覆盖父类成员方

19、法 3.子类继承并重载父类成员方法子类继承并重载父类成员方法本讲稿第三十二页,共三十九页3.4.2 运行时多态性运行时多态性1.编译时多态性编译时多态性Person1 p1=new Person1(李小明李小明,21);/对象获对象获得本类的实例,对象与其获得的实例类型一致得本类的实例,对象与其获得的实例类型一致Student1 s1=new Student2(王大伟王大伟,19);p1.print();/编译时多态性,执行编译时多态性,执行Person1类的方法类的方法s1.print();/编译时多态性,执行编译时多态性,执行Student2类覆盖的方法类覆盖的方法2.运行时多态性运行时多

20、态性Person1 p2=new Student2();/p2获获得子类对象,对象与其获得的实例类型不一致得子类对象,对象与其获得的实例类型不一致p2.print();/运行时多态,执行运行时多态,执行Student2类覆盖的方法类覆盖的方法本讲稿第三十三页,共三十九页【例例3.7】运行时多态性的应用。运行时多态性的应用。1.对象数组及计数对象数组及计数图图3.7 对象与对象数组对象与对象数组 2.运行时多态性体现运行时多态性体现System.out.println(pgroupi.toString();本讲稿第三十四页,共三十九页3.5 抽象类和最终类抽象类和最终类1.抽象类抽象类声明抽象类

21、与抽象方法声明抽象类与抽象方法public abstract class PlaneGraphics1 /平面图形类,抽象类 public abstract double area();/计算面积,抽象方法,分号;必不可少抽象类不能被实例化抽象类不能被实例化抽象类与抽象方法的作用抽象类与抽象方法的作用抽象方法必须被子类覆盖抽象方法必须被子类覆盖本讲稿第三十五页,共三十九页图图3.8 图形抽象类及其子类图形抽象类及其子类 本讲稿第三十六页,共三十九页【例例3.8】抽象类与抽象方法。抽象类与抽象方法。1.设计抽象的平面图形类设计抽象的平面图形类PlaneGraphics12.设计长方形类设计长方形

22、类Rectangle1,继承平面图,继承平面图形类。形类。3.设计椭圆类设计椭圆类Ellipse1,继承平面图形类。,继承平面图形类。4.使用平面图形类及其子类使用平面图形类及其子类5.抽象方法的必要性抽象方法的必要性本讲稿第三十七页,共三十九页2.最终类最终类1.声明最终类声明最终类public final class Math extends Object /数学类,最数学类,最终类终类2.声明最终方法声明最终方法public class Circle1 extends Graphics1 public final double area()/最终方法,最终方法,不能被子类覆盖不能被子类覆

23、盖 return Math.PI*this.radius*this.radius;本讲稿第三十八页,共三十九页实验实验3 类的封装性和继承性设计类的封装性和继承性设计1.设计复数类设计复数类2.设计银行账户类设计银行账户类3.进一步完善例进一步完善例3.3的日期类的日期类Date24.为例为例3.6的的Student2类增加成绩的实例成员变量,类增加成绩的实例成员变量,并在例并在例3.7的的Group类中按照专业分别统计不同班级的类中按照专业分别统计不同班级的学生成绩。学生成绩。5.设计设计Teacher类,继承类,继承Person1类。类。6.为例为例3.8中的平面图形抽象类增加计算周长的抽象方中的平面图形抽象类增加计算周长的抽象方法,并在长方形和椭圆类实现该方法。法,并在长方形和椭圆类实现该方法。7.设计三角形类设计三角形类本讲稿第三十九页,共三十九页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁