四章面向对象基础ppt课件.ppt
《四章面向对象基础ppt课件.ppt》由会员分享,可在线阅读,更多相关《四章面向对象基础ppt课件.ppt(106页珍藏版)》请在三一办公上搜索。
1、1,第四章 面向对象基础,主要内容:1.面向对象基本概念 2.Java的类与对象 3.成员变量与封装 4.成员方法,2,理解面向对象编程的基本概念 了解类的封装方法 如何创建类和对象 了解成员变量和成员方法的特性 学习使用OOP方式进行程序设计,教学目的和要求:,3,重点与难点,重点:类和对象的概念,及实际应用 难点:类的设计,4,4.1 面向对象的基本概念4.2 类4.3 对象4.4 方法4.5 访问控制修饰符4.6 静态修饰符、静态字段和方法4.7 抽象类与抽象方法4.8 最终类、最终属性、最终方法与终结器本章小结,目 录,5,上一章内容复习,一、Java 语言的分支语句 条件语句 if-
2、else 多分支语句 switch-case 二、Java 语言的循环语句 while 语句 do-while 语句 for 语句 三、Java 语言的跳转语句 break 语句continue 语句四、Java 语言的注释语句,6,4.1 面向对象概念,1、对象2、对象的封装3、类和实例4、消息5、继承6、对象之间的关系,7,1、对象,对象(object):面向对象技术的核心。我们可以把我们所生活的真实世界(Real World)看成是由许多大小不同的对象所组成的。对象可以是有生命的个体,比如一个人或一只鸟。,8,对象,对象也可以是无生命的个体,比如一辆汽车或一台计算机。,9,对象,对象还可
3、以是一件抽象的概念,如天气的变化或者鼠标所产生的事件,或者是一个自然数。,123,10,对象的属性和行为,环顾周围的世界,任何地方都可以看到对象,例如:人、狗、汽车、计算机、桌子、椅子等等。不管是有生命的对象还是无生命的对象,它们都有一些共同的特征:属性和行为。,11,对象的属性和行为,例如,人有姓名、年龄、身高、职业等属性,有工作、吃饭、运动等行为。而汽车有形状、颜色、品牌等属性,有启动、加速、刹车、转弯等行为。,12,软件对象,软件对象:现实世界中的对象在计算机中的抽象表示,即仿照现实对象而建立的。软件对象也有状态和行为,软件对象用变量表示对象的状态、用方法来实现对象的行为。一个软件对象就
4、是变量和相关方法的集合。,软件对象 变量方法,13,软件对象的特性,对象名:唯一标识,区别于其它对象的标志,例如car;变量:对象所处的状态,例如汽车行驶的速度;方法:通过改变对象的状态,来实现对象的行为,例如通过加速这个方法来改变汽车的速度;接口:与外界通信的通道。注意:今后,在不引起歧义的情况下,我们把软件对象简称为对象。,14,对象和实体的关系,对象是对现实世界中实体的抽象Why?实体太复杂啦!How?取其关心的部分!What?对象是抽象的,对象是部分的!,人,抽象,15,2、对象的封装,一个对象的变量(状态)构成这个对象的核心,一般不将其对外公布,而是将对变量进行操作的方法对外公开,这
5、样变量就被隐藏起来。这种将对象的变量置于方法的保护之下的方式称为封装。,变量,方法,外部访问,16,2、对象的封装,例如:可以把汽车抽象成一个对象,用变量表示它当前的状态,如速度、油量、所处的位置等,它的行为则可以有加速、刹车、换档等。我们在驾驶汽车时,只需要知道如何操作相应的方法就可以了,不用考虑汽车内部是如何实现诸如提速、刹车等行为。,17,封装将对象的私有数据隐藏起来,其他对象不能直接访问这些私有数据,必须通过调用该对象的相关方法来间接访问。,私有数据,方法,方法,数据,对象A,对象B,公有数据,18,对象封装的好处,通过将对象进行封装,能把对别的对象来说并不重要的对象的实现细节隐蔽起来
6、,从而在使用一个对象时,只需知道调用它的方法而无需知道该方法是如何实现的。(1)模块化:一个对象的源代码的编写和维护独立于其他对象的源代码,而且,对象的使用也很方便;(2)信息隐蔽:每个对象都有一个公共接口使得其他对象可以与其通信,但对象的私有信息和方法则由它自己维护,并且改变这些私有信息和方法不会影响到使用它的其他对象。,19,3、类,在现实世界里,有许多同“种类”的对象。而这些同“种类”的对象可被归类为一个“类”。例如,我们可将世界上所有的动物归为动物类,所有的汽车归类为汽车类。,动物类,汽车类,20,对象与类,class Taxi int color;int door_number;in
7、t speed;void brake()void speedUp()void slowDown(),抽象,软件对象,归类,现实生活中的对象,21,类的概念,类是对多个具有相似行为的对象的一种抽象,描述了属于该类型的所有对象的性质,即类定义了所有某种类型的对象的共有的变量和方法。在面向对象的程序设计中,类是程序的基本单元。,Athlete,22,类与实例(instance),汽车类有些共同的状态(汽缸排气量、排档数、颜色、轮胎数)和行为(换档、开灯、刹车),但每一台汽车有个别的状态和方法可以不同于其他汽车。你的汽车只是这世界中许多汽车中的一个。我们就称你的汽车对象是汽车类中的一个实例(insta
8、nce)。,23,对象和类的关系,类是同类对象的集合和抽象学生A、学生B 学生类对象是类的一个实例化学生类学生A,24,4、消息(message),单独一个对象一般没有什么用处,在大的应用程序中通常包括许多对象,并通过这些对象之间的交互来完成一个复杂的功能。例如在多媒体教室教学活动中,包括教师对象、学生对象、计算机对象、投影仪对象、扩音器对象以及桌子等对象,通过这些对象之间的交互才能顺利完成我们的教学活动。,25,通过各个对象之间的交互,程序就可以实现更高级的功能以及更复杂的行为。软件对象是通过相互间传递消息来实现交互的。,26,当对象A想让对象B执行某项任务时,对象A就向对象B传递消息。有时
9、,接受消息的对象需要了解更多的信息,以明确它该做什么,这时就需要传递一些参数。例如,要使汽车加速,必须发给它一个消息,告诉它做何种动作(即加速),以及实现这个动作所需的参数(即需要达到的速度等)。发送消息的实质就是要调用接受消息的对象的方法,所以发送消息可分为三个步骤:(1)确定接受消息的对象;(2)确定调用对象的哪个方法;(3)传递此方法所需要的参数。,27,一个消息由3个元素所组成:1.消息目标对象(你的汽车)。2.执行方法的名字(换档)。3.执行方法所需用的参数(parameters)(低、高速档)。消息的好处 1.一个对象的行为是通过它的方法来表达,所以消息传递支持所有对象之间可能的交
10、互。2.发送消息的对象与接受消息的对象不需要在相同的程序中,或者相同的机器上。,28,5、子类和继承,什么是子类?子类是作为另一个类的扩充或修正所定义的一个类。,29,继承的概念,什么是继承?继承即子类可以利用父类中定义的方法和变量,就像它们属于子类本身一样。,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),类的继承关系不仅仅只是一层关系
11、,它可以有好几层。这种树状关系,我们称作类层级(class hierarchy)。至于层级数可依照实际需要而定。,31,类层级(class hierarchy),子类继承了父类的变量及方法。如此便可重复使用父类中的变量及方法。这就是继承的好处。不仅如此,子类不受父类的限制,还可增加自己的变量及方法。例如在出租车中加了一个无线电调用方法,或是在轿车里加了一个卫星导航方法。都是按子类特殊的需要新加的。因此,我们可以发现越下层的类,其行为越特别。,32,6、类(对象)之间的关系,关联关系继承关系聚合关系实现关系多态性,33,类(对象)之间的关联关系,关联关系是最弱的关系实现:为一个类的方法参数是另一
12、个类的一个实例,34,继承关系(一般和特殊),XX是一种XXX(java多重继承机制),35,聚合关系(整体和部分),聚合关系:XX是XXX的一部分聚集(松耦),组合(紧密),36,实现关系,实现关系是多态的基础,37,多态,38,4.2 类,类是现实世界某些对象的共同特征(属性和操作)的表示,对象是类的实例。,类的属性:类中所包含的各项数据,如变量或其他类的对象,一般称为类的成员变量。类的服务:类中所包含的成员方法。,39,4.2 类,Java语言中,类的来源主要有两种途径:Java类库 用户自定义的类所有的类都是Object类的子类。如果在自定义类时,没有写明父类,则默认的父类为 Obje
13、ct。从严格意义上讲,Java程序中定义的所有的类都是子类。,40,4.2.1 类的定义,类成员变量声明 类方法声明,修饰符用来说明类的特殊性质,分为三种:访问控制符:public抽象类说明符:abstract最终类说明符:final,接口名跟在implements关键字后面,用来说明类中实现了哪个接口定义的功能和方法。接口是Java用来实现多重继 承的一种特殊机制,我们将在后面详细介绍。,修饰符 class 类名 extends 父类 implements 接口名,41,1关于类头,修饰符 class 类名 extends 父类 implements 接口名,class关键字的后面,应跟随我
14、们所定义的类的名称。(注意不要把class写成Class)。父类名跟在extends 关键字后面,用来说明当前类是哪个已经存在类的子类。继承是类与类之间的一种非常重要的关系。,42,2关于类体 类体的定义要包括类的具体内容,包括类的属性(成员变量)与方法(成员方法)。class,43,类的属性为简单变量的语法如下:修饰符 变量类型 变量名=变量初值;,变量类型和变量名是声明一个变量必不可少的部分;这里的变量的类型是基本数据类型,如 int、double 等。,类的属性,修饰符用来说明变量的特殊性质,主要分为三种:访问控制符:public静态修饰符:static最终修饰符:final,44,类的
15、方法,Java中声明方法的语法如下:修饰符 返回值类型 方法名(参数列表)throws 例外名1,例外名2,/方法体:局部变量声明;语句序列;,类的方法有两种作用:一是对类的属性进行各种操作;二是与其他类或对象进行数据交流、消息传递等操作。,方法修饰符分为四种:访问控制符:public抽象修饰符:abstract静态修饰符:static最终修饰符:final,45,4.2.2 用户自定义类,Java程序设计中,大部分精力都要放在创建称为类的用户自定义类型(user-defined type)上。类也称为程序员定义的类型(programmer-defined type),每个类都含有数据和一组操
16、作数据的方法。用户自定义类型(即类)的实例称为对象。,下面是一个简单的 Employee 类,今后我们在编写职工工资系统时,有可能会用到它。,46,class 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
17、()/方法1 return name;/更多的方法,47,4.2.3 构造方法,定义好一个类以后,我们需要创建该类的实例。在Java中,构造一个类的实例(对象),编译器需要完成以下三件事情:(1)为对象分配内存空间;(2)初始化对象中的成员变量的值,初始值可以是缺省值,或者指定一个初始值;(3)调用类的构造方法。在 Java中,每个类中都至少有一个构造方法。如果没有,则编译器会自动为该类定义一个默认的构造方法。构造方法的作用:(1)可以保证用户正确地构造类的对象;(2)可以对对象进行初始化。,48,构造方法的格式,构造方法的语法形式如下:构造方法修饰符 方法名(形式参数列表)throws 异常
18、列表 方法体 其中,构造方法修饰符与通常的方法修饰符相同。一个类的构造方法可以有多个,它们都具有相同的方法名,即类名,只是参数的个数和类型会不同。编译器根据参数的个数和类型来决定调用哪个构造方法。这就是构造方法的多态。,没有返回值,也没有void,方法名与类名相同,49,缺省的构造方法,构造方法分为缺省的构造方法(不带参数)和带参数的构造方法。如果类的定义中没有编写构造方法,Java语言会自动为用户提供一个缺省的构造方法。缺省的构造方法确保每个 Java类都至少有一个构造方法。例如在类 Employee 中,如果我们没有定义构造方法,则 Java自动提供一个缺省的构造方法,如下:public
19、Employee()/缺省的构造方法,50,构造方法的例子,【例】下面的例子将建立雇员信息类 EmpInfoA,其中定义了一个构造方法。利用这个构造方法创建一个雇员对象,并初始化该对象,然后打印出该对象的若干信息。,51,构造方法举例,public class EmpInfoA String name;/雇员的姓名 String designation;/雇员的职务 String department;/雇员的部门/带参数的构造方法 public EmpInfoA(String name,String designation,String department)this.name=name;t
20、his.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();/调用方法 print(),例子:EmpInfoB,52,类成员变量的初始化,对类的成员变量进行初始化,主要有5种途径:每种数据类型都有默认的初始值可以在声明成
21、员变量的同时赋予相应的初始值在类的成员方法中,为每个类成员变量赋值。例如:在main()方法中在类的构造方法中,为每个类成员变量赋值。例如:在前面的构造方法的例子中利用初始化块对成员变量进行初始化。初始化块是由一对花括号括起的语句块。初始化块不能位于任何方法内,53,初始化块、构造方法初始化成员变量,class Point int x,y;/成员变量/在初始化块中初始化 x=10;y=20;System.out.println(Point initialization block);Point(int dx,int dy)/在构造方法中初始化 x=dx;y=dy;System.out.prin
22、tln(Point construct method);,54,4.3 对象,类是对象的产品模板。在现实世界里,我们使用的是产品而不是产品的图纸。同样道理,Java中运行的应该是用类创建的实例化对象。当使用一个类创建了一个对象时,我们也称之为给出了这个类的一个实例。一个典型的Java程序会创建很多对象,它们通过消息传递进行相互交流,共同完成程序的功能。一旦任务完成,对象就会被垃圾收集器收回,完成它从创建、使用到清除的生命三步曲。,55,对象的创建,首先必须拥有一个合适的类才能创建一个合适的对象,有了合适的对象才能完成合适的工作。对象创建的语法格式为:类名 对象名=new 类名(参数列表);,调
23、用类的构造方法,声明对象,56,创建一个对象的三个步骤,1、对象的声明格式为:类名 对象名;例如:People zhangPing;2、为声明的对象分配内存new 运算符为声明的对象分配内存,然后调用类的构造方法来初始化对象。用new可以为同一个类实例化多个不同的对象,这些对象分别占用不同的内存空间,因此改变其中一个对象的状态不会影响到其他对象的状态。3、执行构造方法,进行初始化zhangPing=new People(“20040101”);zhangYong=new People(“20040102”);/实例化另一个对象 上面三个步骤,通常可以写成如下简洁的形式:People zhang
24、Ping=new People(“20040101”);,类名 对象名=new 类名(参数列表);,57,对象创建的例子,【例】下面的例子将建立雇员信息类 EmpInfoB。利用缺省的构造方法创建一个雇员对象。并且在主方法中初始化该对象,然后打印出该对象的若干信息。,58,public class EmpInfoB String name;/雇员的姓名 String designation;/雇员的职务 String department;/雇员的部门 void print()/成员方法 System.out.println(name+是+department+的+designation);p
25、ublic static void main(String args)/主方法 EmpInfoB emp=new EmpInfoB();/调用缺省构造方法创建对象 emp.name=张三;/初始化对象 emp emp.designation=经理;emp.department=销售部;emp.print();/调用方法 print(),例子:EmpInfoA,对象创建举例,59,对象的使用,创建好一个对象之后,就可以使用这个对象。(1)访问对象的成员变量:通过运算符“.”格式为:对象名.成员变量名 例如,在前面对象创建的例子中:emp.name=张三;成员变量的访问也可以用new创建对象,然后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 基础 ppt 课件
链接地址:https://www.31ppt.com/p-5384293.html