四章面向对象基础课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《四章面向对象基础课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 基础 课件
- 资源描述:
-
1、1第第四四章章 面向对象基础面向对象基础主要内容:主要内容:v1.面向对象基本概念 v2.Java的类与对象 v3.成员变量与封装 v4.成员方法 2v 理解面向对象编程的基本概念理解面向对象编程的基本概念v 了解类的封装方法了解类的封装方法v 如何创建类和对象如何创建类和对象v 了解成员变量和成员方法的特性了解成员变量和成员方法的特性 v 学习使用学习使用OOP方式进行程序设计方式进行程序设计 教学目的和要求:教学目的和要求:3重点与难点重点与难点v重点:重点:v 类和对象的概念,及实际应用 v难点:难点:v 类的设计4v4.1 面向对象的基本概念面向对象的基本概念v4.2 类类v4.3 对
2、象对象v4.4 方法方法v4.5 访问控制修饰符访问控制修饰符v4.6 静态修饰符、静态字段和方法静态修饰符、静态字段和方法v4.7 抽象类与抽象方法抽象类与抽象方法v4.8 最终类、最终属性、最终方法与终结器最终类、最终属性、最终方法与终结器v本章小结本章小结目目 录录5上一章内容复习v一、Java 语言的分支语句 条件语句 if-else 多分支语句 switch-case v二、Java 语言的循环语句 while 语句 do-while 语句 for 语句 v三、Java 语言的跳转语句 break 语句 continue 语句v四、Java 语言的注释语句 64.1 面向对象概念v1
3、、对象v2、对象的封装v3、类和实例v4、消息v5、继承v6、对象之间的关系71、对象v对象对象(object):):面向对象技术的核心。面向对象技术的核心。v我们可以把我们所生活的真实世界我们可以把我们所生活的真实世界(Real World)看成是由许多大小不同的对象所组成的。看成是由许多大小不同的对象所组成的。v对象可以是对象可以是有生命有生命的个体,比如一个人或一只鸟。的个体,比如一个人或一只鸟。8对象对象v对象也可以是无生命无生命的个体,比如一辆汽车或一台计算机。9对象对象对象还可以是一件抽象的概念,如天气的变化或者鼠标所产生的事件,或者是一个自然数。10对象的属性和行为v环顾周围的世
4、界,任何地方都可以看到对象,例如:人、狗、汽车、计算机、桌子、椅子等等。v不管是有生命的对象还是无生命的对象,它们都有一些共同的特征共同的特征:属性和行为属性和行为。11对象的属性和行为v例如,人有姓名、年龄、身高、职业姓名、年龄、身高、职业等属性,有工工作、吃饭、运动作、吃饭、运动等行为。v而汽车有形状、颜色、品牌形状、颜色、品牌等属性,有启动、加速、启动、加速、刹车、转弯刹车、转弯等行为。12软件对象v软件对象:软件对象:现实世界中的对象在计算机中的抽象表示,即仿照现实对象而建立的。v软件对象也有状态状态和行为行为,软件对象用变量变量表示对象的状态、用方法方法来实现对象的行为。v一个软件对
5、象就是变量变量和相关方法方法的集合。软件对象软件对象 变量方法变量方法13软件对象的特性对象名:对象名:唯一标识,区别于其它对象的标志,例如car;变量:变量:对象所处的状态,例如汽车行驶的速度速度;方法:方法:通过改变对象的状态,来实现对象的行为,例如通过加速加速这个方法来改变汽车的速度;接口:接口:与外界通信的通道。注意:注意:今后,在不引起歧义的情况下,我们把软件对象简称为对象。14对象和实体的关系v对象是对现实世界中实体的抽象Why?实体太复杂啦!How?取其关心的部分!What?对象是抽象的,对象是部分的!人人抽象 152、对象的封装一个对象的变量(状态)构成这个对象的核心核心,一般
6、不将其对外公布,而是将对变量进行操作的方法方法对外公开,这样变量就被隐藏起来。这种将对象的变量置于方法的保护之下的方式称为封装封装。变量变量 方法方法 外部访问外部访问162、对象的封装例如:可以把汽车抽象成一个对象,用变量表示它当前的状态,如速度、油量、所处的位置速度、油量、所处的位置等,它的行为则可以有加速、刹车、换档加速、刹车、换档等。我们在驾驶汽车时,只需要知道如何操作相应的方法就可以了,不用考虑汽车内部是如何实现诸如提速、刹车提速、刹车等行为。17v封装封装将对象的私有数据隐藏起来,其他对象不能直接访问这些私有数据,必须通过调用该对象的相关方法来间接访问。私有数据私有数据 方法方法
7、方法方法数据数据对象对象A对象对象B公有数据公有数据18对象封装的好处通过将对象进行封装,能把对别的对象来说并不重要的对象的实现细节实现细节隐蔽起来,从而在使用一个对象时,只需知道调用它的方法而无需知道该方法是如何实现的。(1)模块化:一个对象的源代码的编写和维护独立于其他对象的源代码,而且,对象的使用也很方便;(2)信息隐蔽:每个对象都有一个公共接口使得其他对象可以与其通信,但对象的私有信息和方法私有信息和方法则由它自己维护,并且改变这些私有信息和方法不会影响到使用它的其他对象。193、类v在现实世界里,有许多同“种类”的对象。而这些同“种类”的对象可被归类归类为一个“类”。v例如,我们可将
8、世界上所有的动物归为动物类,所有的汽车归类为汽车类。动物类汽车类20对象与类class Taxi int color;int door_number;int speed;void brake()void speedUp()void slowDown()类抽象软件对象归类现实生活中的对象21类的概念v类是对多个具有相似行为相似行为的对象的一种抽象,描述了属于该类型的所有对象的性质,即类定义了所有某种类型的对象的共有的变量和方法共有的变量和方法。v在面向对象的程序设计中,类是程序的基本单元。Athlete22类与实例类与实例(instance)v汽车类有些共同的状态(汽缸排气量、排档数、颜色、轮胎
9、数)和行为(换档、开灯、刹车),但每一台汽车有个别的状态和方法可以不同于其他汽车。v你的汽车只是这世界中许多汽车中的一个。我们就称你的汽车对象汽车对象是汽车类汽车类中的一个实例实例(instance)。汽车类(class)实例(instance)new你的车23对象和类的关系v类是同类对象的集合和抽象学生A、学生B 学生类v对象是类的一个实例化学生类学生A244、消息(message)v单独一个对象一般没有什么用处,在大的应用程序中通常包括许多对象,并通过这些对象之间的交互来完成一个复杂的功能。v例如在多媒体教室教学活动中,包括教师对象教师对象、学学生对象、计算机对象、投影仪对象、扩音器对象生
10、对象、计算机对象、投影仪对象、扩音器对象以及桌子桌子等对象,通过这些对象之间的交互才能顺利完成我们的教学活动。25v通过各个对象之间的交互,程序就可以实现更高级的功能以及更复杂的行为。v软件对象是通过相互间传递消息来实现交互的。对象对象B对象对象 Amessage26v当对象A想让对象B执行某项任务时,对象A就向对象B传递消息。有时,接受消息的对象需要了解更多的信息,以明确它该做什么,这时就需要传递一些参数。v例如,要使汽车加速,必须发给它一个消息,告诉它做何种动作(即加速),以及实现这个动作所需的参数(即需要达到的速度等)。v发送消息的实质就是要调用接受消息的对象的方法,所以发送消息可分为三
11、个步骤:v(1)确定接受消息的对象;v(2)确定调用对象的哪个方法;v(3)传递此方法所需要的参数。27v 一个消息由3个元素所组成:1.消息目标对象(你的汽车)。2.执行方法的名字(换档)。3.执行方法所需用的参数(parameters)(低、高速档)。v消息的好处 1.一个对象的行为是通过它的方法来表达,所以消息传递支持所有对象之间可能的交互。2.发送消息的对象与接受消息的对象不需要在相同的程序中,或者相同的机器上。285、子类和继承v什么是子类什么是子类?v子类是作为另一个类的扩充或修正所定义的一个类。子类是作为另一个类的扩充或修正所定义的一个类。bicycle(super class)
12、Mountain bikesRacing bikesTandem bikessub class29继承的概念 什么是继承什么是继承?继承即子类可以利用父类中定义的方法和变量,就继承即子类可以利用父类中定义的方法和变量,就像它们属于子类本身一样。像它们属于子类本身一样。class Car int color_number;int door_number;int speed;push_break()add_oil()class Trash_Car extends Car double amount;fill_trash()30类层级类层级(class hierarchy)v类的继承关系不仅仅只是一
13、层关系,它可以有好几层。这种树状关系,我们称作类层级(class hierarchy)。至于层级数可依照实际需要而定。Root Class31类层级类层级(class hierarchy)v 子类继承了父类的变量及方法。如此便可重复使用父类中的变量及方法。这就是继承的好处。v 不仅如此,子类不受父类的限制,还可增加自己的变量及方法。v 例如在出租车中加了一个无线电调用方法,或是在轿车里加了一个卫星导航方法。都是按子类特殊的需要新加的。v 因此,我们可以发现越下层的类,其行为越特别。326、类(对象)之间的关系v关联关系v继承关系v聚合关系v实现关系v多态性33类(对象)之间的关联关系v关联关系
14、是最弱的关系v实现:为一个类的方法参数是另一个类的一个实例34继承关系(一般和特殊)vXX是一种XXX(java多重继承机制)35聚合关系(整体和部分)v聚合关系:XX是XXX的一部分v聚集(松耦),组合(紧密)36实现关系v实现关系是多态的基础37多态384.2 类类 类是现实世界某些对象的共同特征类是现实世界某些对象的共同特征(属性和操作属性和操作)的的表示,对象是类的实例表示,对象是类的实例。类的属性:类中所包含的各项数据,如变量或其类的属性:类中所包含的各项数据,如变量或其他类的对象,一般称为类的成员变量。他类的对象,一般称为类的成员变量。类的服务:类的服务:类中所包含的类中所包含的成
15、员方法。成员方法。394.2 类类 vJava语言中,类的来源主要有两种途径:语言中,类的来源主要有两种途径:Java类库类库 用户自定义的类用户自定义的类v所有的类都是所有的类都是Object类的子类。如果在自定义类类的子类。如果在自定义类时,没有写明父类,则默认的父类为时,没有写明父类,则默认的父类为 Object。v从严格意义上讲,从严格意义上讲,Java程序中定义的所有的类程序中定义的所有的类都是子类。都是子类。404.2.1 类的定义类的定义 类成员变量声明类成员变量声明 类方法声明类方法声明修饰符用来说明类的特殊性质,分为三种:访问控制符:public抽象类说明符:abstract
16、最终类说明符:final接口名跟在implements关键字后面,用来说明类中实现了哪个接口定义的功能和方法。接口是Java用来实现多重继 承的一种特殊机制,我们将在后面详细介绍。修饰符修饰符 class 类名类名 extends 父类父类 implements 接口名接口名41v1关于类头关于类头 修饰符修饰符 class 类名类名 extends 父类父类 implements 接口名接口名l class关键字的后面,应跟随我们所定义的类的名称。(注意不要把class写成Class)。l 父类名跟在extends 关键字后面,用来说明当前类是哪个已经存在类的子类。继承是类与类之间的一种非常
17、重要的关系。422关于类体关于类体 n类体的定义要包括类的具体内容,包括类的属类体的定义要包括类的具体内容,包括类的属性性(成员变量成员变量)与方法与方法(成员方法成员方法)。class 43类的属性为简单变量的语法如下:类的属性为简单变量的语法如下:修饰符修饰符 变量类型变量类型 变量名变量名=变量初值变量初值;变量类型和变量名是声明一个变量变量类型和变量名是声明一个变量必不可少的部分;这里的变量的类型是必不可少的部分;这里的变量的类型是基本数据类型,如基本数据类型,如 int、double 等。等。类的属性类的属性修饰符用来说明变量的特殊性质,主要分为三种:访问控制符:public静态修饰
18、符:static最终修饰符:final44类的方法类的方法Java中声明方法的语法如下:中声明方法的语法如下:修饰符修饰符 返回值类型返回值类型 方法名方法名(参数列表参数列表)throws 例外名例外名1,例外名,例外名2,/方法体:方法体:局部变量声明;局部变量声明;语句序列;语句序列;n 类的方法有两种作用:一是对类的属性进行各种操作;类的方法有两种作用:一是对类的属性进行各种操作;二是与其他类或对象进行数据交流、消息传递等操作。二是与其他类或对象进行数据交流、消息传递等操作。方法修饰符分为四种:访问控制符:public抽象修饰符:abstract静态修饰符:static最终修饰符:fi
19、nal454.2.2 用户自定义类用户自定义类n Java程序设计中,大部分精力都要放在创建称程序设计中,大部分精力都要放在创建称为为类类的的用户自定义类型用户自定义类型(user-defined type)上。)上。类也称为类也称为程序员定义的类型程序员定义的类型(programmer-defined type),每个类都含有数据和一组操作数据的方法。),每个类都含有数据和一组操作数据的方法。用户自定义类型(即类)的实例称为对象。用户自定义类型(即类)的实例称为对象。下面是一个简单的下面是一个简单的 Employee 类,类,今后我们今后我们在编写职工工资在编写职工工资系统时,有可能会用到它
20、。系统时,有可能会用到它。46class EmployeeString name;/成员变量成员变量double salary;Date hireDay;public Employee(String n,double s,int year,int month,int day)/构造方法构造方法 name=n;/职工姓名职工姓名 salary=s;/职工工资职工工资 hireDay=new GregorianCalendar(year,month-1,day);/出勤数出勤数public String getName()/方法方法1 return name;/更多的方法更多的方法 474.2.3
21、 构造方法构造方法n 定义好一个类以后,我们需要创建该类的实例。在Java中,构造一个类的实例(对象),编译器需要完成以下三件事情:(1)为对象分配内存空间;(2)初始化对象中的成员变量的值,初始值可以是缺省值,或者指定一个初始值;(3)调用类的构造方法。n 在 Java中,每个类中都至少有一个构造方法。如果没有,则编译器会自动为该类定义一个默认的构造方法。n 构造方法的作用:(1)可以保证用户正确地构造类的对象;(2)可以对对象进行初始化。48构造方法的格式构造方法的格式构造方法的语法形式如下:构造方法修饰符构造方法修饰符 方法名方法名(形式参数列表形式参数列表)throws 异常列表异常列
22、表 方法体方法体 其中,构造方法修饰符与通常的方法修饰符相同。n 一个类的构造方法可以有多个,它们都具有相同的方法名,即类名,只是参数的个数和类型会不同。编译器根据参数的个数和类型来决定调用哪个构造方法。这就是构造方法的多态。没有返回值,也没有void方法名与类名相同49缺省的构造方法缺省的构造方法n 构造方法分为缺省的构造方法(不带参数)和带参数的构造方法。n 如果类的定义中没有编写构造方法,Java语言会自动为用户提供一个缺省的构造方法。缺省的构造方法确保每个 Java类都至少有一个构造方法。n 例如在类 Employee 中,如果我们没有定义构造方法,则 Java自动提供一个缺省的构造方
23、法,如下:public Employee()/缺省的构造方法 50构造方法的例子构造方法的例子【例】下面的例子将建立雇员信息类 EmpInfoA,其中定义了一个构造方法。利用这个构造方法创建一个雇员对象,并初始化该对象,然后打印出该对象的若干信息。51构造方法举例构造方法举例public class EmpInfoA String name;/雇员的姓名雇员的姓名 String designation;/雇员的职务雇员的职务 String department;/雇员的部门雇员的部门 /带参数的构造方法带参数的构造方法 public EmpInfoA(String name,String de
24、signation,String department)this.name=name;this.designation=designation;this.department=department;void print()/成员方法成员方法 System.out.println(name+是是+department+的的+designation);public static void main(String args )/主方法,程序入口主方法,程序入口 EmpInfoA emp=new EmpInfoA(张三张三,经理经理,销售部销售部);emp.print();/调用方法调用方法 prin
25、t()例子:EmpInfoB52类成员变量的初始化类成员变量的初始化对类的成员变量进行初始化,主要有对类的成员变量进行初始化,主要有5种途径:种途径:v每种数据类型都有默认的初始值每种数据类型都有默认的初始值v可以在声明成员变量的同时赋予相可以在声明成员变量的同时赋予相应的初始值应的初始值v在类的成员方法中,为每个类成员在类的成员方法中,为每个类成员变量赋值。例如:在变量赋值。例如:在main()方法中方法中v在类的构造方法中,为每个类成员在类的构造方法中,为每个类成员变量赋值。例如:在前面的构造方变量赋值。例如:在前面的构造方法的例子中法的例子中v利用初始化块对成员变量进行初始利用初始化块对
展开阅读全文