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