第4章类和对象.ppt
《第4章类和对象.ppt》由会员分享,可在线阅读,更多相关《第4章类和对象.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章类和对象 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望第4章类和对象v4.1.面向对象的基本概念面向对象的基本概念v4.2类类v4.3方法方法v4.4访问控制符访问控制符v4.5静态修饰符、静态字段和方法静态修饰符、静态字段和方法v4.6抽象类与抽象方法抽象类与抽象方法v4.7最终类、最终属性、最终方法与终结器最终类、最终属性、最终方法与终结器v本章小结本章小结v思考与练习思考与练习4.1.面向对象的基本概念学习要点之二学习要点之二OOD方法提供了抽象数据
2、类型机制,遵循软件设计的三条重要原则,即抽象、信息隐藏和模块化;双重模块化数据对数据的操作信息处理+封装4.1.面向对象的基本概念v4.1.1抽象v1什么是抽象抽象就是抽出事物的本质特性而暂时不考虑它们的细节。过程抽象和数据抽象是常用的两种主要抽象手段。v2如何用面向对象的方法实现抽象如何用面向对象的方法实现抽象一个抽象数据类型(AbstractDataType,ADT)可以分解成4个部分,如图4-2所示。语法和语义构成抽象数据类型ADT的说明,让使用者了解这个抽象数据类型的特征。属性和方法构成ADT的实现,展示这个ADT是怎样做成的。图4-2抽象数据类型 v4.1.2封装封装 将信息隐蔽的过
3、程称为封装。有两方面的原因促使我们控制对成员的访问。第一个原因是防止程序员接触他们不该接触的东西通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,毋需明白这些信息。第二个原因是允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响。v4.1.3对象对象 可将对象想象对象(可将对象想象对象(objectobject)应是应是实际问题域中有意义的个体或概念实体。实际问题域中有意义的个体或概念实体。此外,对象应该具有记忆自身状态的能此外,对象应该具有记忆自身状态的能力。同时对象应该以某种方式与系统发力。同时对象应该以某种方式与系统发生关联,既对象应该与系统中其他
4、有意生关联,既对象应该与系统中其他有意义的对象进行消息传递,并提供外部服义的对象进行消息传递,并提供外部服务。务。v4.1.3对象对象l(1)(1)所有东西都是对象。可将对象想象成一种新型变所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。量;它保存着数据,但可要求它对自身进行操作。l(2)(2)程序是一大堆对象的组合;通过消息传递,各对程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。象知道自己该做些什么。l(3)(3)每个对象都有自己的存储空间,可容纳其他对象。每个对象都有自己的存储空间,可容纳其他对象。l(4)(4)每个对象都有一种类型。
5、根据语法,每个对象都每个对象都有一种类型。根据语法,每个对象都是某个是某个“类类”的一个的一个“实例实例”。其中,。其中,“类类”(ClassClass)是是“类型类型”(TypeType)的同义词。一个类最重要的特征就的同义词。一个类最重要的特征就是是“能将什么消息发给它?能将什么消息发给它?”l(5 5)同一类所有对象都能接收相同的消息。)同一类所有对象都能接收相同的消息。4.2 类 类类是是现现实实世世界界某某些些对对象象的的共共同同特特征征(属属性性和和操操作作)的的表示,对象是类的实例表示,对象是类的实例。4.2 类 类的基本定义方法如下:修饰符修饰符class类名类名extends
6、父类父类implements接口名接口名 类成员变量声明类成员变量声明 类方法声明类方法声明类的修饰符用来说明类的特殊性质。分为三种:访问控制符:public公共类公共类抽象类说明符:abstract最终类说明符:final接口名跟在implements关键字后面,用来说明当前类中实现了哪个接口定义的功能和方法。接口是Java语言用来实现多重继承的一种特殊机制,我们将在后面详细介绍它的使用方法。v1关于类头关于类头-classclass关键字,在它的后面,应跟随新数据类型的名称。(注意不要把class写成Class)。父类名跟在extends关键字后面,用来说明当前类是哪个已经存在类的子类,存
7、在继承关系。继承是类与类之间的一种非常重要的关系。v1关于类头关于类头-类的修饰符类的修饰符“public”(公共)公共)意味着后续的定义任何人均可使用。“private”(私有)私有)意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能访问后续的定义信息。“protected”(受保护的)受保护的)与“private”相似,只是一个继承的类可访问受保护的成员,但不能访问私有成员。“friendly”(友好的)友好的)若某样东西是“友好的”,意味着它只能在这个包装的范围内使用(所以这一访问级别有时也叫作“包装访问”)。“v1关于类头关于类头-接口名接口名接口名跟在接口名跟在
8、implements关键字后面,用来关键字后面,用来说明当前类中实现了哪个接口定义的功能说明当前类中实现了哪个接口定义的功能和方法。接口是和方法。接口是Java语言用来实现多重继语言用来实现多重继承的一种特殊机制,我们将在后面详细介承的一种特殊机制,我们将在后面详细介绍它的使用方法。绍它的使用方法。2关于类体关于类体类类体体的的定定义义要要包包括括类类的的具具体体内内容容,包包括括类的属性与方法。类的属性与方法。classJava中声明类属性为简单变量的语法如下:中声明类属性为简单变量的语法如下:修饰符修饰符变量类型变量类型变量名变量名=变量初值变量初值;变量类型和变量名是声明一个变量必变量类
9、型和变量名是声明一个变量必不可少的部分;变量的类型是简单数据类型,不可少的部分;变量的类型是简单数据类型,如如int、double等。等。2关于类体关于类体-类的属性类的属性2关于类体关于类体-类的方法类的方法Java中声明方法的语法如下:中声明方法的语法如下:修饰符修饰符返回值类型返回值类型方法名方法名(参数参数列表列表)throws例外名例外名1,例外名,例外名2,方法体:方法体:局部变量声明;局部变量声明;语句序列;语句序列;类的方法,又称类的方法,又称为成员函数,用为成员函数,用来规定类属性上来规定类属性上的操作,实现类的操作,实现类的内部功能的机的内部功能的机制,同时也是类制,同时也
10、是类与外界进行交互与外界进行交互的重要窗口。的重要窗口。类中定义的方法通常起到两种作用:一是围绕着类的类中定义的方法通常起到两种作用:一是围绕着类的属性进行各种操作;二是与其他的类或对象进行数据交流、属性进行各种操作;二是与其他的类或对象进行数据交流、消息传递等操作。消息传递等操作。注意:系统调用方法的最大特点:注意:系统调用方法的最大特点:不需要在程序里书写专门的调用不需要在程序里书写专门的调用方法的命令方法的命令Java语言中定义的方法有两类:语言中定义的方法有两类:一类是需要程序书写专门的调用命令来调用的方法,一类是需要程序书写专门的调用命令来调用的方法,称为程序调用方法,例如称为程序调
11、用方法,例如isPfime();另一类是运行过程中系统自动调用的方法,称为系统方另一类是运行过程中系统自动调用的方法,称为系统方法,例如我们前面程序中的法,例如我们前面程序中的action()、paint()、init()等。这等。这两类方法的定义和使用原则有很大差异。两类方法的定义和使用原则有很大差异。2关于类体关于类体-类的方法类的方法4.2.2用户程序自定义类用户程序自定义类Java程序员把注意力放在创建称为类的用户程序员把注意力放在创建称为类的用户自定义类型(自定义类型(user-definedtype)上,类也称上,类也称为程序员定义的类型(为程序员定义的类型(programmer-
12、definedtype),),每个类都含有数据和一组操作数据的每个类都含有数据和一组操作数据的方法,类中的数据部分称为实例变量。用户定方法,类中的数据部分称为实例变量。用户定义类型(即类)的实例称为对象。义类型(即类)的实例称为对象。下面是一个简单化的下面是一个简单化的EmployeeEmployee类,在编写今后的职工工资类,在编写今后的职工工资系统时,会用到它。系统时,会用到它。classEmployee/构造函数构造函数publicEmployee(Stringn,doubles,intyear,intmonth,intday)name=n;/职工姓名职工姓名salary=s;/职工工资
13、职工工资hireDay=newGregorianCalendar(year,month-1,day);/出勤数出勤数/方法方法1publicStringgetName()returnname;/更多的方法更多的方法/属性的实例属性的实例privateStringname;privatedoublesalary;privateDatehireDay;4.2.3创建类及类的实例对象创建类及类的实例对象 对对象象是是类类的的一一个个实实例例,类类是是同同种种对对象象的的抽抽象象,是是创创建建对对象象的的模模板板。在在程程序序中中创创建建个个对对象象将将在在内内存中开辟一块空间,其中包括该对象的属性和
14、方法。存中开辟一块空间,其中包括该对象的属性和方法。我我们们将将分分步步讲讲述述这这个个类类的的实实现现细细节节。创创建建对对象象使使用用关关键键字字运运算算符符newnew,例例如如下下面面的的语语句句将将创创建建EmployeeEmployee的对象:的对象:【例【例4.14.1】显示三个员工的相关信息】显示三个员工的相关信息4.2.3创建类及类的实例对象创建类及类的实例对象在在程程序序中中我我们们构构造造了了一一个个EmployeeEmployee数数组组,并并给给它它赋赋给给三三个个EmployeeEmployee对对象象。关于数组我们将在下一章讲述。关于数组我们将在下一章讲述。sta
15、ff0=staff0=newnew Employee(Employee(张三张三,75000,1987,12,15);,75000,1987,12,15);staff1=staff1=new new Employee(Employee(李四李四,50000,1989,10,1);,50000,1989,10,1);staff2=staff2=newnew Employee(Employee(王五王五,40000,1990,3,15);,40000,1990,3,15);创建对象以某个类为模板,这个类里定义了哪创建对象以某个类为模板,这个类里定义了哪些属性和方法,新建的对象就必然在内存里拥有些属
16、性和方法,新建的对象就必然在内存里拥有相应的属性和方法。相应的属性和方法。可见,相对于简单数据类型,类就是用户自己可见,相对于简单数据类型,类就是用户自己定义的复杂的抽象数据类型:而相对于简单变量,定义的复杂的抽象数据类型:而相对于简单变量,对象就是复杂的既包括数据又包括方法代码的复对象就是复杂的既包括数据又包括方法代码的复杂数据单位。杂数据单位。4.2.4构造函数构造函数v1构造函数的一般概念构造函数的一般概念v2创建自己的构造函数创建自己的构造函数v3构造函数的作用构造函数的作用4.2.4构造函数构造函数-构造函数的一般概念构造函数的一般概念 要要使使用用对对象象,首首先先必必须须构构造造
17、它它们们,并并指指定定它它们们的的初初始始状状态态,然后将方法应用于对象。然后将方法应用于对象。在在Java程程序序设设计计语语言言中中,使使用用构构造造函函数数(constructor)来来构构造造新新的的实实例例。一一个个构构造造函函数数是是一一个个新新的的方方法法,它它的的作作用用是是构构造造并初始化对象。并初始化对象。构构造造函函数数是是类类的的一一种种特特殊殊方方法法,它它的的特特殊殊性性主主要要体体现现在在如如下下的的几个方面:几个方面:(1)构造函数的方法名与类名相同。)构造函数的方法名与类名相同。(2)构造函数没有返回类型。)构造函数没有返回类型。(3)构造函数的主要作用是完成
18、对类对象的初始化工作。)构造函数的主要作用是完成对类对象的初始化工作。(4)构造函数不能由编程人员显式地直接调用。)构造函数不能由编程人员显式地直接调用。(5)在在创创建建一一个个类类的的新新对对象象的的同同时时,系系统统会会自自动动调调用用该该类类的的构造函数为新对象初始化。构造函数为新对象初始化。4.2.4构造函数构造函数-创建自己的构造函数创建自己的构造函数 构构造造函函数数的的名名字字和和类类的的名名字字是是相相同同的的。当当构构造造Employee类类的的对对象象时时,此此构构造造函函数数被被启启动动,实实例例字字段段赋赋初初值值,在在Java中,定义和初始化是统一的中,定义和初始化
19、是统一的两者缺一不可。两者缺一不可。例如,用下面的代码创建例如,用下面的代码创建Employee类的一个实例时,类的一个实例时,newEmployee(“JamesBond”,100000,1950,1,1);构造函数的特点有:构造函数的特点有:(1 1)构造函数和类具有相同的名字。)构造函数和类具有相同的名字。(2 2)一个类可以有多个构造函数。)一个类可以有多个构造函数。(3 3)构造函数可以有)构造函数可以有0 0个、个、1 1个或多个参数。个或多个参数。(4 4)构造函数没有返回值。)构造函数没有返回值。(5 5)构造函数总是和)构造函数总是和newnew运算符一起被调用。运算符一起被
20、调用。4.2.4构造函数构造函数-构造函数的作用构造函数的作用(1)对象初始化)对象初始化(2 2)引入更多的灵活度(变量赋值或更复杂的操作)引入更多的灵活度(变量赋值或更复杂的操作)(3)Java中可以不定义构造函数中可以不定义构造函数Java中中可可以以不不定定义义构构造造函函数数,此此时时系系统统会会自自动动为为 该该系系统统生生成成一一个个默默认认的的构构造造函函数数。这这个个构构造造函函数数的的名名字字与与类类名相同,它没有任何形式参数,也不完成任何操作。名相同,它没有任何形式参数,也不完成任何操作。为为了了避避免免失失去去控控制制,一一般般将将构构造造函函数数的的声声明明与与创创建
21、建分分开开处理。处理。4.3.1方法概述方法概述4.3 方法Java程程序序是是由由一一个个个个类类定定义义组组成成的的,类类有有两两个个部部分分:属属性性和和方方法法。属属性性描描述述类类是是什什么么,方方法法描描述述类类做做什什么么。任任何何对对象象都都有有独独立立的的内内存存存存储储它它的的属属性性。类类的的所所有有的的对对象象共共享存贮在内存的方法。享存贮在内存的方法。换言之:方法是类的主要组成部分。在一个类中,程换言之:方法是类的主要组成部分。在一个类中,程序的作用体现在方法中。序的作用体现在方法中。方法即是方法即是JAVA创建一个有名字的子程序。一个主方法创建一个有名字的子程序。一
22、个主方法和若干个子方法构成。主方法调用其他方法,其他方法间和若干个子方法构成。主方法调用其他方法,其他方法间也可互相调用,同一个方法可被一个或多个方法调用任意也可互相调用,同一个方法可被一个或多个方法调用任意次。次。4.3.1方法概述方法概述Java程序的基本结构如下:程序的基本结构如下:引入引入Java类库;类库;定义用户类定义用户类1定义类定义类1的若干变量或对象:的若干变量或对象:定义类定义类1的方法的方法1;定义类定义类1的方法的方法2;定义类定义类1的方法的方法M1;定义用户类定义用户类2定义类定义类2的若干变量或对象:的若干变量或对象:定义类定义类2的方法的方法1;定义类定义类2的
23、方法的方法2;定义类定义类2的方法的方法M24.3.1方法概述方法概述Java语语言言的的方方法法实实现现子子任任务务处处理理时时,有有下下面面几几个原则与规律:个原则与规律:(1)算算法法中中需需要要细细化化的的步步骤骤、程程序序中中重重复复的的代代码码以及重载父类方法都可以定义成类的方法。以及重载父类方法都可以定义成类的方法。(2)界面清晰。)界面清晰。(3)大小适中。)大小适中。(4)方方法法有有两两种种:一一种种是是标标准准方方法法,JavaAPI提提供供了了丰丰富富的的类类和和方方法法,这这些些方方法法提提供供了了程程序序员员所所需需的的许许多多功功能能。另另一一种种是是用用户户自自
24、定定义义的的方方法法,以以解解决决用户专门需要。用户专门需要。(5)Java应应用用程程序序中中,程程序序的的执执行行从从main类类开开始始,调调用用其其他他方方法法后后又又回回到到main类类,在在main类类中中结结束束整整个程序的运行。个程序的运行。4.3.2定义方法定义方法v1声明方法头声明方法头v2声明方法体声明方法体Java中声明方法的语法如下:中声明方法的语法如下:修饰符修饰符返回值类型返回值类型方法名方法名(参数参数列表列表)throws例外名例外名1,例外名,例外名2,方法体:方法体:局部变量声明;局部变量声明;语句序列;语句序列;类的方法,又称类的方法,又称为成员函数,用
25、为成员函数,用来规定类属性上来规定类属性上的操作,实现类的操作,实现类的内部功能的机的内部功能的机制,同时也是类制,同时也是类与外界进行交互与外界进行交互的重要窗口。的重要窗口。4.3.2定义方法定义方法-声明方法头声明方法头1声明方法头声明方法头方方法法头头一一般般由由方方法法名名、参参数数列列表表、返返回回类类型型、方法修饰符和方法抛出的例外五部分组成。方法修饰符和方法抛出的例外五部分组成。(1)方法名可以是任何有效的标识符,命名规则与标识符命名规则相同。(2)类型说明符用来指定方法返回值的类型,方法最多只能返回一个值。(3)参数列表是方法的输入接口,它列出了一系列形式参数的类型和名称,在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象
限制150内