面向对象的核心特性.ppt
《面向对象的核心特性.ppt》由会员分享,可在线阅读,更多相关《面向对象的核心特性.ppt(74页珍藏版)》请在三一办公上搜索。
1、Java2程序设计实用教程(第2版),第3章 类与对象,3.1 面向对象程序设计概述3.2 面向对象与UML建模3.3 Java语言与面向对象特性3.4 类的定义和对象的创建3.5 方法3.6 静态成员3.7 包3.8 成员的访问控制3.9 封装3.10 利用系统已有类,Java2程序设计实用教程(第2版),3.1面向对象程序设计概述,Java2程序设计实用教程(第2版),3.1.1面向对象术语的解释,1.对象什么是对象:现实世界中解决问题的实物(包括有行为和属性)例如:咖啡猫 黄色的(属性)爱睡觉(行为)2.类什么是类:对象的模板模板内容=类的特性(属性)+行为(方法)类的成员例如:猫类(有
2、颜色,猫龄等属性;有睡觉,吃食等行为。,Java2程序设计实用教程(第2版),3.1 面向对象程序设计概述,类与对象关系概念:类(class)是既包括数据又包括作用于数据的一组操作的封装体。对象(object)是类的实例(instance)。,类,对象,抽象,实例化,方法,数据或变量,Java2程序设计实用教程(第2版),3.继承 什么叫继承?继承是接收来自父辈的财产在面向对象中继承的外延是什么?拥有父辈所拥有的东西 子类的继承子类拥有父辈的成员例如:汽车 继承 车/所有种类的汽车都需要实现汽车的基本功能类的继承实现了代码的重用。,Java2程序设计实用教程(第2版),4.接口 接口像一个类定
3、义的模板,它提供了与其他事物之间相互通信的规则条目,但并非具体实现。例如:多个程序员开发同一个应用程序的不同类,约定不同类之间使用同一组方法进行通信。则创建一个接口用于定义这些方法。,Java2程序设计实用教程(第2版),5.封装 数据隐藏。成员的详细信息对 于对象外的代码是 私有的和不可见的。,数据,方法,外界,访问,Java2程序设计实用教程(第2版),3.1.2面向对象程序设计方法的优点,1可重用性2可扩展性3易于管理和维护,Java2程序设计实用教程(第2版),3.2面向对象与UML建模,建模是一项经过检验并被广为接受的工程技术。建立房屋和大厦的建筑模型,能帮助用户得到实际建筑物的印象
4、。要生产合格的软件就要有一套关于体系的结构、过程和工具的规范。建模的目的:1.有助于按照实际情况或按照所需的样式使系统可视化2.能够规约系统的结构或行为3.给出指导系统构造的模板4.使做出的决策文档化,Java2程序设计实用教程(第2版),3.2.2UML建模语言,什么是UML?Unified Modeling Language(统一建模语言)UML是一种用来创建程序模型的图形语言(即带有语意的一种图形记号)。可以用来说明代码中对象之间的关系。,Java2程序设计实用教程(第2版),3.2.3UML进行面向对象的系统分析设计,UML进行面向对象的系统分析设计,其过程通常由以下3个部份组成。识别
5、系统的用例和角色进行系统分析,并抽取类系统设计,并设计类及其行为,Java2程序设计实用教程(第2版),3.3 Java语言与面向对象特性,Java中的类:信息以类为单位单独封装Java中的封装:无需关心调用对象的内部细节Java中的继承:只准继承一个类,但可以“继承”多个接口。Java中的多态Java中的垃圾回收机制:自动回收垃圾内存,Java2程序设计实用教程(第2版),类的封装性、继承性和多态性类的封装性类的继承性类的多态性,数据,操作,成员变量,成员方法,类,类的封装性,访问权限,类的继承性 类的多态性,外部,Java2程序设计实用教程(第2版),类的继承性继承的概念:子类拥有父类的成
6、员。特性:1.子类自动拥有父类全部成员(成员变量方法),人类(父),学生类(子),性别、姓名、身高、国籍,吃饭、睡觉、工作.,性别、姓名、身高、国籍,吃饭、睡觉、工作.,Java2程序设计实用教程(第2版),2.子类可以更改父类继承的成员;如学生类中,“工作”方法会有自己的限制。3.子类可以增加自己的成员;如学生类中,添加“学习”、“考试”等方法。4.子类不能删除父类任何成员。,Java2程序设计实用教程(第2版),Java的单继承,C,java,多继承:一个类有多个直接父类。可以拥有多个父类的属性或方法。,单继承:一个类只有一个直接父类,若需要继承其他方法,则通过接口实现。,注意:java中
7、只支持单继承。即子类只有一个直接父类。多继承特点通过接口实现。,Java2程序设计实用教程(第2版),类的多态性多态:允许拥有相同的形式,但在不同情况下拥有不同机能的特性。如“”多态性方法执行的多样性重载:方法名同,参数列表不同覆盖:子类重写了父类中同名的方法。,Java2程序设计实用教程(第2版),3.4类的定义和对象的创建,程序运行可理解为做三件事:建立对象使用对象:对象之间传递消息,程序处理消息作出响应运行完毕收回对象所占空间。对象的生命周期:创建运行消亡,获得内存空间,进行各种操作,使用完释放内存,Java2程序设计实用教程(第2版),3.4.1 定义类:类声明类主体,类定义的格式:类
8、声明 成员变量的声明;成员方法的声明及实现;,类主体,类,注意与c有何区别!变量与方法的声明与定义均不允许放在类主体外面!,class 类名 代码;,数据,方法,Java2程序设计实用教程(第2版),声明类:权限 特性 名字语法:修饰符 class 类 extends 父类 implements 接口列表,类的修饰符用来说明类的特殊性质。分为三种:访问控制符:public(公共类)、friendly(缺省类)protected(保护类)、private(私有类)多见于内嵌类)抽象类说明符:abstract最终类说明符:final,关键字,类名,表示继承哪个父类,表示继承哪些接口,Java2程序
9、设计实用教程(第2版),例:声明一个公共类 Data1:public class Data1 定义一个公共类 人类:定义一个类 学生类:,public class Man,class Student,Java2程序设计实用教程(第2版),3.4.2类之间的关系,USES-A关系HAS-A关系IS-A关系,Java2程序设计实用教程(第2版),1.USES-A关系,类A的方法操纵了类B(对象)的成员,则称之为类A”USES-A”(用到了)类B.例3-1,轿车类(Car),其他类(Sample3_1),调用,USES-A关系,Public class Sample3_1 c.startIsEnou
10、gh();,Java2程序设计实用教程(第2版),2.HAS-A关系,HAS-A关系是一种拥有关系,若类A中有B类型的成员引用变量,则类A“HAS-A”(拥有)类B.例3-2,c.getTyreInfo().getMaterial();,轿车类(Car),轮胎类(Tyre),拥有,HAS-A关系,Java2程序设计实用教程(第2版),3.IS-A关系,在面向对象中“IS-A”的概念是基于继承的,旨在表达一个类是另一个类的子类。也就是说,若类A是类B子类的一种,则可以说类A“IS-A”(是一种)类B。例如:“苹果”是“水果”的种类,class Fruit public void canEat()
11、,class Apple,Apple a=new Apple()a.canEat();,水果,苹果,继承,IS-A关系,Java2程序设计实用教程(第2版),3.4.3构造函数,要使用对象,首先必须构造它们,并指定它们的初始状态,然后将方法应用于对象。在Java程序设计语言中,使用构造函数来构造新的实例,作用是构造并初始化对象。,Java2程序设计实用教程(第2版),构造函数的创建,创建无参构造函数 例3-3创建带参构造函数 例3-4,Java2程序设计实用教程(第2版),构造函数的特点有:,(1)构造函数的方法名与类名相同。(2)构造函数没有返回类型,也无需声明类型。(3)构造函数的主要作用
12、是完成对类对象的初始化工作,并传递参数。(4)构造函数不能由编程人员显式地直接调用。由系统调用。(5)一个类可以定义多个构造方法,缺省构造函数为无参的默认构造函数,不执行任何代码。(6)构造方法可以重载,以参数的个数、类型或排列顺序区分。,Java2程序设计实用教程(第2版),3.3.4类成员,声明成员变量修饰符 static final transient 数据类型 变量名,访问控制符:public(公共类)friendly(缺省类)protected(保护类)private(私有类),类(静态)成员变量,常量,临时变量,类声明 成员变量的声明;成员方法的声明及实现;,Java2程序设计实用
13、教程(第2版),例3-5:定义Student类,声明3个成员变量分别表示姓名、年龄、班级:public class Student/类声明 public String stuName;public int stuAge;public String stuClass;成员变量的引用,/声明成员变量,Java2程序设计实用教程(第2版),2.成员变量的初始值,创建对象后,如果对象有成员变量,则系统会自动为其分配一个初始值。例3-6 例3-7,注意:对象引用型成员变量,其初始值为“null”,表示此引用没有指向任何对象。,Java2程序设计实用教程(第2版),3.4.5 对象的创建,声明对象类名 对
14、象 例:Student s;对象实例化对象=new 类的构造方法(参数列表)s=new Student();引用对象的成员变量及方法:用“.”运算符对象.成员变量对象.成员方法(参数列表)s.name=王强;/引用对象的成员变量,Student,Java2程序设计实用教程(第2版),3.5 方法,方法的定义方法的基本组成:方法的声明+方法体修饰符 static 返回值类型 方法(参数列表)throws 异常类 语句序列;return 返回值;,方法声明:,方法体:,Java2程序设计实用教程(第2版),例:int sub(int a,int b)return a-b;,int sub(int
15、a,int b)int c;c=a-b;return c;,Java2程序设计实用教程(第2版),说明:1.参数序列指定要传递给方法什么样的信息(1)可以是java中的任何类型,包括基本数据参数类型、对象引用类型。(2)每个参数必须包括类型与变量标识符,若有多个参数,则用逗号将其分隔。如(int a,int b),Java2程序设计实用教程(第2版),2.方法体方法体是该方法具体业务代码的实现。return语句负责方法的返回。3.返回值类型返回值类型指定了该方法返回结果的类型。可以是基本数据类型或对象引用类型,没有返回值也要使用void关键字。,Java2程序设计实用教程(第2版),返回值规则
16、:,可以在具有对象引用返回类型的方法中返回null,但基本数据类型作为返回类型则不可以返回null。对象给也是完全合法的返回值类型,如数组。在具有基本数据返回类型的方法内,可以返回任何值,只要其能够自动转换返回值类型。如返回值为double,返回整数4是可以的。但返回值为int时,返回一个浮点数12.43则 报错。一定不能在具有void返回类型的方法中返回任何内容。在具有对象引用返回类型的方法内,可以返回任何类型的对象引用,只要返回的引用与返回类型相同或可自动转换为返回类型即可。,Java2程序设计实用教程(第2版),3.5.2 方法重载,概念:同一个类中多个方法有相同的名字,不同的参数列表,
17、这种情况称为方法重载。如:public double changeSize(int size,String name,float pattern)public void changeSize(int size,String name)private int changeSize(int size,float pattern)void changeSize(float pattern,String name)?方法返回类型不同,参数相同,算不算重载?注意:返回类型不同并不足以构成方法重载。当重载方法被调用时,编译器根据参数的类型和数量来确定实际调用哪个重载方法的版本。例3-8,Java2程序设计
18、实用教程(第2版),方法调用进行匹配的时候,首先选择直接匹配的方法,如果没有,则将参数进行提升转换后再匹配方法,总是匹配最接近的方法。基本类型则按照基本数据类型间的自动转换关系;引用类型则寻找最能兼容传递的参数。例3-9多匹配选择示例例3-10,Java2程序设计实用教程(第2版),3.5.3递归,递归方法就是自调用方法,在方法体内直接或间接地调用自己。有两种方式:1.直接递归2.间接递归,Java2程序设计实用教程(第2版),直接递归:即在方法体内调用方法本身。例:求斐波那数列第n项 斐波那数列:f(0)=f(1)=1 f(n)=f(n-1)+f(n-2)(n1)例3-11,Java2程序设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 核心 特性

链接地址:https://www.31ppt.com/p-6034391.html