第4章类和对象wjzhppt课件.ppt
《第4章类和对象wjzhppt课件.ppt》由会员分享,可在线阅读,更多相关《第4章类和对象wjzhppt课件.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章 类和对象wjzh第4章 类和对象n4.1.面向对象的基本概念面向对象的基本概念n4.2 类类n4.3 方法方法n4.4 访问控制符访问控制符n4.5 静态修饰符、静态字段和方法静态修饰符、静态字段和方法4.1.面向对象的基本概念OOD方法提供了抽象数据类型机制,遵循软件设计的三条重要原则,即抽象、信息隐藏和模块化;双重模块化数据对数据的操作信息处理+封装4.1.面向对象的基本概念n4.1.1 抽象v1什么是抽象 抽象就是抽出事物的本质特性而暂时不考虑它们的细节。过程抽象和数据抽象是常用的两种主要抽象手段。 客观世界的对象和操作 计算机算法 解空间 数据 程序员对问题的表达(抽象) 客观
2、世界的算法 结果 客观世界的对象 程序设计的对象和操作 输出数据 问题空间 n2如何用面向对象的方法实现抽象如何用面向对象的方法实现抽象 一个抽象数据类型(Abstract Data Type,ADT)可以分解成4个部分,如图4-2所示。语法和语义构成抽象数据类型ADT的说明,让使用者了解这个抽象数据类型的特征。属性和方法构成ADT的实现,展示这个ADT是怎样做成的。 抽象数据类型 说明 实现 语法 语义 属性 方法 图4-2 抽象数据类型 面向对象的程序设计/概述n面向对象的程序设计思想,是将我们要处理的事物抽象成为具面向对象的程序设计思想,是将我们要处理的事物抽象成为具有状态和行为的对象来
3、处理有状态和行为的对象来处理n具有共同属性的一组对象,在面向对象的程序设计语言中,可具有共同属性的一组对象,在面向对象的程序设计语言中,可以用一个以用一个“模版模版”或者或者“基本原型基本原型”来描述,这就是类来描述,这就是类/class/classn在面向对象的程序设计中,类是我们对客观世界的事物进行抽在面向对象的程序设计中,类是我们对客观世界的事物进行抽象思维活动后得到的象思维活动后得到的“抽象数据类型抽象数据类型”,而对象则是类的实例,而对象则是类的实例n对象的状态用成员变量来表述,行为用成员方法来表述对象的状态用成员变量来表述,行为用成员方法来表述n面向对象的程序设计主要围绕以下几个主
4、要概念面向对象的程序设计主要围绕以下几个主要概念抽象、封装、继承、多态。抽象、封装、继承、多态。n4.1.2 封装封装 将信息隐蔽的过程称为封装。 有两方面的原因促使我们控制对成员的访问。 第一个原因是防止程序员接触他们不该接触的东西通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,毋需明白这些信息。 第二个原因是允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响。 n4.1.3 对象对象 可将对象想象对象(可将对象想象对象(objectobject)应是应是实际问题域中有意义的个体或概念实体。实际问题域中有意义的个体或概念实体。此外,对象应该具有记忆
5、自身状态的能此外,对象应该具有记忆自身状态的能力。同时对象应该以某种方式与系统发力。同时对象应该以某种方式与系统发生关联,既对象应该与系统中其他有意生关联,既对象应该与系统中其他有意义的对象进行消息传递,并提供外部服义的对象进行消息传递,并提供外部服务。务。 n4.1.3 对象对象l(1) (1) 所有东西都是对象。可将对象想象成一种新型变量;它保所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。存着数据,但可要求它对自身进行操作。 l(2) (2) 程序是一大堆对象的组合;通过消息传递,各对象知道自程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些
6、什么。己该做些什么。 l(3) (3) 每个对象都有自己的存储空间,可容纳其他对象。每个对象都有自己的存储空间,可容纳其他对象。l(4) (4) 每个对象都有一种类型。根据语法,每个对象都是某个每个对象都有一种类型。根据语法,每个对象都是某个“类类”的一个的一个“实例实例”。其中,。其中,“类类”(ClassClass)是是“类型类型”(TypeType)的同义词。一个类最重要的特征就是的同义词。一个类最重要的特征就是“能将什么消息发能将什么消息发给它?给它?”l(5 5)同一类所有对象都能接收相同的消息。)同一类所有对象都能接收相同的消息。 4.2 类 类是现实世界某些对象的共同特征类是现实
7、世界某些对象的共同特征(属性和操作属性和操作)的表示,的表示,对象是类的实例对象是类的实例。类的属性类的属性:就是类的静态属性的简称,指类内包就是类的静态属性的简称,指类内包含的含的 各项数据,如变量或其他类的对象;各项数据,如变量或其他类的对象;类的服务类的服务: 则被称为成员函数或方法。则被称为成员函数或方法。4.2 类 类的基本定义方法如下:修饰符修饰符 class 类名类名 extends 父类父类 implements 接口名接口名 类成员变量声明类成员变量声明 类方法声明类方法声明 类的修饰符用来说明类的特殊性质。 分为三种:访问控制符:public 公共类公共类抽象类说明符:ab
8、stract最终类说明符:f inal 接口名跟在implements关键字后面,用来说明当前类中实现了哪个接口定义的功能和方法。 接口是Java语言用来实现多重继承的一种特殊机制,我们将在后面详细介绍它的使用方法。n1关于类头关于类头-class class关键字,在它的后面,应跟随新数据类型的名称。(注意不要把class写成Class)。 父类名跟在extends 关键字后面,用来说明当前类是哪个已经存在类的子类,存在继承关系。继承是类与类之间的一种非常重要的关系。n1关于类头关于类头-类的修饰符类的修饰符“public”(公共)公共) 意味着后续的定义任何人均可使用。“private”(
9、私有)私有)意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能访问后续的定义信息。“protected”(受保护的)受保护的)与“private”相似,只是一个继承的类可访问受保护的成员,但不能访问私有成员。“friendly”(友好的)友好的)若某样东西是“友好的”,意味着它只能在这个包装的范围内使用(所以这一访问级别有时也叫作“包装访问”)。“n1关于类头关于类头-接口名接口名接口名跟在接口名跟在implements关键字后面,用来关键字后面,用来说明当前类中实现了哪个接口定义的功能说明当前类中实现了哪个接口定义的功能和方法。接口是和方法。接口是Java语言用来实现多
10、重继语言用来实现多重继承的一种特殊机制,我们将在后面详细介承的一种特殊机制,我们将在后面详细介绍它的使用方法。绍它的使用方法。2关于类体关于类体 类体的定义要包括类的具体内容,包括类类体的定义要包括类的具体内容,包括类的属性与方法。的属性与方法。class Java中声明类属性为简单变量的语法如下:中声明类属性为简单变量的语法如下: 修饰符修饰符 变量类型变量类型 变量名变量名 =变量初值变量初值; 变量类型和变量名是声明一个变量必变量类型和变量名是声明一个变量必不可少的部分;变量的类型是简单数据类不可少的部分;变量的类型是简单数据类型,如型,如int、double等。等。2关于类体关于类体-
11、类的属性类的属性2关于类体关于类体-类的方法类的方法Java中声明方法的语法如下:中声明方法的语法如下: 修饰符修饰符 返回值类型返回值类型 方法名方法名(参数参数列表列表)throws 例外名例外名1,例外名,例外名2, 方法体:方法体: 局部变量声明;局部变量声明; 语句序列;语句序列; 类的方法,又称类的方法,又称为成员函数,用为成员函数,用来规定类属性上来规定类属性上的操作,实现类的操作,实现类的内部功能的机的内部功能的机制,同时也是类制,同时也是类与外界进行交互与外界进行交互的重要窗口。的重要窗口。 类中定义的方法通常起到两种作用:一是围绕着类的类中定义的方法通常起到两种作用:一是围
12、绕着类的属性进行各种操作;二是与其他的类或对象进行数据交流、属性进行各种操作;二是与其他的类或对象进行数据交流、消息传递等操作。消息传递等操作。注意:系统调用方法的最大特点:注意:系统调用方法的最大特点:不需要在程序里书写专门的调用不需要在程序里书写专门的调用方法的命令方法的命令 Java语言中定义的方法有两类:语言中定义的方法有两类: 一类是需要程序书写专门的调用命令来调用的方法,一类是需要程序书写专门的调用命令来调用的方法,称为程序调用方法,例如称为程序调用方法,例如isPfime (); 另一类是运行过程中系统自动调用的方法,称为系统方另一类是运行过程中系统自动调用的方法,称为系统方法,
13、例如我们前面程序中的法,例如我们前面程序中的action()、paint()、init()等。这等。这两类方法的定义和使用原则有很大差异。两类方法的定义和使用原则有很大差异。 2关于类体关于类体-类的方法类的方法4.2.2 用户程序自定义类用户程序自定义类 Java程序员把注意力放在创建称为类的用户程序员把注意力放在创建称为类的用户自定义类型(自定义类型(user-defined type)上,类也称上,类也称为程序员定义的类型(为程序员定义的类型(programmer-defined type),),每个类都含有数据和一组操作数据的每个类都含有数据和一组操作数据的方法,类中的数据部分称为实例
14、变量。用户定方法,类中的数据部分称为实例变量。用户定义类型(即类)的实例称为对象。义类型(即类)的实例称为对象。 下面是一个简单化的下面是一个简单化的EmployeeEmployee类,在编写今后的职工工资类,在编写今后的职工工资系统时,会用到它。系统时,会用到它。class Employee /构造函数构造函数public Employee(String n,double s,int year,int month,int day) name = n; /职工姓名职工姓名 salary = s; /职工工资职工工资 hireDay=new GregorianCalendar(year,mont
15、h-1,day);/出勤数出勤数/方法方法1public String getName() return name;/更多的方法更多的方法/属性的实例属性的实例private String name;private double salary;private Date hireDay;4.2.3 创建类及类的实例对象创建类及类的实例对象 对象是类的一个实例,类是同种对象的抽象,对象是类的一个实例,类是同种对象的抽象,是创建对象的模板。在程序中创建是创建对象的模板。在程序中创建个对象将在内个对象将在内存中开辟一块空间,其中包括该对象的属性和方法。存中开辟一块空间,其中包括该对象的属性和方法。 我
16、们将分步讲述这个类的实现细节。创建对象使我们将分步讲述这个类的实现细节。创建对象使用关键字运算符用关键字运算符newnew,例如下面的语句将创建例如下面的语句将创建EmployeeEmployee的对象:的对象:【例【例4.14.1】显示三个员工的相关信息】显示三个员工的相关信息4.2.3 创建类及类的实例对象创建类及类的实例对象在程序中我们构造了一个在程序中我们构造了一个EmployeeEmployee数组,并给它赋给三个数组,并给它赋给三个EmployeeEmployee对对象象。关于数组我们将在下一章讲述。关于数组我们将在下一章讲述。 staff0 = staff0 = newnew E
17、mployee( 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); 创建对象以某个类为模板,这个类里定义了哪创建对象以某个类为模板,这个类里定义了哪些属性和方法,新建的对象
18、就必然在内存里拥有些属性和方法,新建的对象就必然在内存里拥有相应的属性和方法。相应的属性和方法。 可见,相对于简单数据类型,类就是用户自己可见,相对于简单数据类型,类就是用户自己定义的复杂的抽象数据类型:而相对于简单变量定义的复杂的抽象数据类型:而相对于简单变量,对象就是复杂的既包括数据又包括方法代码的,对象就是复杂的既包括数据又包括方法代码的复杂数据单位。复杂数据单位。类的研究(1)/定义v对一个对一个JavaJava应用程序来说,应用程序来说,mainmain方法是必须的,但并不是在每方法是必须的,但并不是在每个类中都需要它个类中都需要它v定义一个只包含数据的类是不多见的,往往还要定义操作
19、这些定义一个只包含数据的类是不多见的,往往还要定义操作这些数据的方法,这样就可以把类中数据的特定布局结构隐藏起来数据的方法,这样就可以把类中数据的特定布局结构隐藏起来class Box class Box double width; double width; double height; double height; double depth; double depth; 一个简单的类一个简单的类定义一个类,实际上就是定义了定义一个类,实际上就是定义了一种新的数据类型一种新的数据类型 这个例子里,新的数据类型叫这个例子里,新的数据类型叫BoxBox类的研究(2)/使用BoxmyVol is
20、3000.0myVol is 3000.0hisVol is 162.0hisVol is 162.0class Box double width;double height;double depth;class Box double width;double height;double depth;class BoxDemo class BoxDemo public static void main(String s) public static void main(String s) Box myBox = new Box(); Box myBox = new Box(); Box his
21、Box = new Box(); Box hisBox = new Box(); double myVol, hisVol; double myVol, hisVol; myBox.width=10; myBox.height=20; myBox.depth=15; myBox.width=10; myBox.height=20; myBox.depth=15; hisBox.width=3; hisBox.height=6; hisBox.depth=9; hisBox.width=3; hisBox.height=6; hisBox.depth=9; myVol=myBox.width m
22、yVol=myBox.width* *myBox.heightmyBox.height* *myBox.depth;myBox.depth; hisVol=hisBox.width hisVol=hisBox.width* *hisBox.heighthisBox.height* *hisBox.depth;hisBox.depth; System.out.println(“myVol is ” + myVol); System.out.println(“myVol is ” + myVol); System.out.println(“hisVol is ” + hisVol); System
23、.out.println(“hisVol is ” + hisVol); 用用.运算符运算符操作对象的成员操作对象的成员用用newnew来创建类来创建类的对象的对象不同对象的成员变不同对象的成员变量是相互独立的量是相互独立的接收者的数据类型与返回类型相兼容接收者的数据类型与返回类型相兼容BoxBox这个这个classclass应该有计应该有计算自己体积的能力算自己体积的能力返回数据的类型与方法返回数据的类型与方法指定的类型相兼容指定的类型相兼容类的研究(3)/向类中添加方法myVol is 3000.0myVol is 3000.0hisVol is 162.0hisVol is 162.0用
24、不用用不用.运运算符算符class Box double width;double height;double depth;class Box double width;double height;double depth;double volume()return widthdouble volume()return width* *heightheight* *depth;depth; class BoxDemo2 class BoxDemo2 public static void main(String s) public static void main(String s) Box m
25、yBox = new Box(); Box hisBox = new Box(); Box myBox = new Box(); Box hisBox = new Box(); double myVol, hisVol;double myVol, hisVol; myBox.width=10; myBox.height=20; myBox.depth=15; myBox.width=10; myBox.height=20; myBox.depth=15; hisBox.width=3; hisBox.height=6; hisBox.depth=9; hisBox.width=3; hisBo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 类和对象wjzhppt课件 对象 wjzhppt 课件
限制150内