资源预览内容
第1页 / 共101页
第2页 / 共101页
第3页 / 共101页
第4页 / 共101页
第5页 / 共101页
第6页 / 共101页
第7页 / 共101页
第8页 / 共101页
第9页 / 共101页
第10页 / 共101页
亲,该文档总共101页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
基本概念面向过程的程序设计思想:在解决问题的时候,从问题的每个细节入手来展开系统流程,比较适用于解决简单的问题。“面向过程”是一种以事件为中心的编程思想。它并不关心整体,而是关心整体中的每个细节。面向对象的程序设计(Object Oriental Programming, OOP)思想:最近十年发展起来的程序设计模式,其目标是将软件系统待处理问题或者事务抽象为对象(Object),由于对象本身具有一定的特征和行为,因此可以通过对象间的消息传递的方式驱动对象的动作,进而实现软件系统的功能。基本概念u类是数据和对数据操作的封装体。 u类具有封装性、继承性、多态性和抽象性;这些特性提供软件复用机制,增强软件的扩充能力,提高软件的可维护性。Java的面向对象机制从C+发展而来:u完善了C+类的封装、继承、多态和抽象等基本概念;u 放弃了C+的多重继承、友元类和运算符重载等易产生歧义 且安全性差的诸多特性; u采用单重继承+接口的方式实现多重继承功能,提供内存自 动管理和异常处理机制。第3章 类的封装、继承和多态3.1 类和对象 3.2 类的封装性 3.3 类的继承性 3.4 类的多态性 3.5 类的抽象性面向对象程序设计思想:将数据域和对数据的操作合起来作为一个整体进行设计 。 对象具有属性和行为能力的实体。对象参与软件运行,多种对象合作完成预定任务。类一组对象的数据类型,是创建对象的模板。3.1 类和对象u面向对象程序设计,就是把现实对象及其关系抽象为问题域的类及其关系,用程序设计语言设计类,再创建对象实现指定功能。3.1 类和对象3.1.1 类 3.1.2 对象1. 声明类2. 声明成员变量和成员方法3. 成员方法重载3.1.1 类类(class) 类是数据以及对数据的一组操作的封装体。 成员变量类中的数据,反映类的状态和特征; 成员方法类中对数据的操作,表示类的行为能力。 类的成员类中的成员变量和成员方法的统称。 注意:与数据类型相似,类是只定义数据及对数据操作的模板,类本身并不真正参与程序运行,实际参与程序运行的是类的对象。 3.1.1 类3.1.1 类类声明的格式:类声明 成员变量的声明;成员方法的声明及实现;类声明定义该类的名称、访问权限、与其他类的关系等。成员方法用来描述对成员变量进行的操作,不但要声明方法,还要实现方法。1.声明类 必须项关键字class和自定义的类名;可选项方括号中的; 、合法的Java标识符类名标识符Java预定通常首字母大写。说明类属性的关键字,如public访问权限、abstract抽象类、final最终类等。3.1.1 类修饰符 class 类 extends 父类implements 接口列表类的参数,带参数的类称为泛型类。2. 声明成员变量和成员方法 3.1.1 类修饰符 数据类型 变量=表达式 ,变量=表达式;成员变量声明格式:一些说明成员属性的关键字,包括访问权限public 、protected、private以及静态成员static、最终方法和最终变量final等。 3.1.1 类成员方法用来描述对成员变量进行的操作。格式如下: 修饰符 返回值类型 方法(参数列表) throws 异常类语句序列;return 返回值;2. 声明成员变量和成员方法 一些说明成员属性的关键字,包括访问权限public 、protected、private以及静态成员static、最终方法和最终变量final等。 例如:public class MyDate /类声明int year, month, day; /声明成员变量void set ( int y, int m, int d) /成员方法,设置日期值 /无返回值,有3个参数year=y;month=m;day=d; 3.1.1 类3. 成员方法重载 一个类中成员变量不能同名,但成员变量与成员方法可以同名 。3.1.1 类重载:一个类中可以有多个同名的成员方法,前提是参数列表必须不同,称为类的成员方法重载。重载的作用:重载多个方法为一种功能提供多种实现;重载方法的区别:必须以不同的参数类型、参数个数、参数的次序来区别。3.1.1 类例如:void set (int y, int m, int d) void set (int m, int d) /重载方法,参数个数不同void set (int d)void set (MyDate d) /重载方法,参数的数据类型不同 重载的执行:编译时,根据方法实际参数的数据类型、个数和次序,决定究竟应该执行重载方法中的哪一个。注意:如果两个方法的参数列表相同但返回值类型不同,则不是重载,将产生编译错误。3.1 类和对象3.1.1 类 3.1.2 对象类是用于定义数据及对数据操作的构造数据类型,类本身不能参与程序运行,实际参与程序运行的是类的 对象。对象 (object) 对象(object)是类的实例(instance),即类的取值。 类的一个对象能够获得并保存类的一个实例。 类比:类对象类的实例 数据类型变量取值例如:int类型变量i取值10n 对象是动态的,每个对象都有自己的生存周期,都会经历一个从创建、运行到消亡的变化过程。n任何一个对象都有其所属的类。使用对象首先需要声明对象所属的类,再使对象获得一个类的实例,引用对象的成员变量和调用对象的方法,使用完后释放对象。3.1.2 对象3.1.2 对象1.声明对象 类 对象 2. 创建实例 对象= new 类的构造方法(参数列表) 例如: MyDate d; /声明d是MyDate类的一个对象例如: d=new MyDate(); /创建类MyDate的一个实例赋值给对象dMyDate d=new MyDate(); /声明对象,创建实例并赋值说明:声明对象仅仅说明了对象所属的类,必须通过赋值才能使对象获得实例。3. 引用对象的成员变量和调用成员方法 对象. 成员变量 对象. 成员方法(参数列表) 例如: d.year =2008; /引用成员变量d.set(2009,7,28); /调用成员方法3.1.2 对象注意:Java的内存自动管理机制,能够跟踪存储单元的使用情况,自动收回不再被使用的资源,所以,程序中不需要释放对象占用的空间资源。3.1.2 对象【例3.1】 声明日期类及使用日期对象。声明MyDate类,演示类的声明格式、创建对象、引用对象成员变量、调用对象成员方法等。4. 对象的引用模型 3.1.2 对象Java的类是引用数据类型,两个对象之间的赋值是引用赋值,对象赋值过程中没有创建新的实例。图3.1 对象的引用模型3.1.2 对象4. 对象的引用模型 图3.1 对象的引用模型3.1.2 对象5. 对象的关系运算与比较相等图3.2 对象比较引用与比较实例值是否相等n 使用关系运算符=、!=可比较两个对象是否引用同一个实例。其它关系运算符、=不能用于比较对象,Java不支持C+的运算符重载功能。 3.1.2 对象5. 对象的关系运算与比较相等图3.2 对象比较引用与比较实例值是否相等n 一般情况下,两个对象相等是指它们引用的两个实例的各成员变 量值分别对应相等。 n Java约定一个类的equals()方法用于比较该类的两个对象是否相等。3.2 类的封装性类的封装性(encapsulation)的含义:1. 将数据和对数据的操作组合起来构成类,对象是一个不可分割的独立单位;2. 实现信息隐藏,类既要提供与外部联系的方法,又要尽可能地隐藏实现细节。类的使用者需要知道“做什么”,包括有哪些类、每个类的特 点、每个类提供了哪些常量、成员变量和成员方法等,而不需 要知道方法实现的细节。类的设计者需要知道“怎样做”,要考虑类怎样定义、类中有 哪些数据和方法、它们的访问控制权限、方法如何实现等问题。3.2 类的封装性3.2.1 构造方法 3.2.2 this引用和instanceof 对象运算符 3.2.3 访问控制 3.2.4 静态成员 3.2.5 析构方法 3.2.6 浅拷贝与深拷贝3.2.1 构造方法 类的构造方法(constructor)用于创建类的一个实例并对实例的成员变量进行初始化 。1. 声明及调用构造方法构造方法与类中成员方法的不同之处:构造方法与类同名;构造方法通过new运算符调用。n一个类可以声明多个构造方法对成员变量进行不同需求 的初始化;n构造方法不需要写返回值类型,因为它返回的就是该类 的一个实例。构造方法和成员方法的不同之处 A.作用不同:成员方法实现对类中成员变量的操作;构造方法用于创建类的实例并对实例的成员变量进行初始化。B.调用方式不同:成员方法通过对象调用;构造方法通过new运算符调用。3.2.1 构造方法 例如:public class MyDatepublic MyDate ( int y, int m, int d) /声明构造方法,初始化成员变量year=y;month=m;day=d; 使用new运算符调用自定义的构造方法,参数必须符合构造方法的声明。例如: MyDate d=new MyDate(2009,7,18);/创建实例并初始化成员变量3.2.1 构造方法 2. 默认构造方法 A. 当一个类没有声明构造方法时,Java自动为该类提供一个无参数的默认构造方法,对各成员变量按其数据类型进行初始化。整数、浮点数、字符、布尔和引用数据类型的初值分别为0、0.0、u0000、false和null。B. 当一个类声明了构造方法,Java不再提供默认构造方法。C. 一个类需要声明默认构造方法为成员赋默认值。3.2.1 构造方法 例如: public MyDate ( ) /默认构造方法 year=1970;month=1;day=1; 3.2.1 构造方法 3. 拷贝构造方法 n一个类的构造方法,如果其参数是该类对象,称为拷贝 构造方法,它将创建的新对象初始化为形式参数的实例 值,实现对象复制功能。 nJava不提供默认拷贝构造方法。例如: public MyDate ( MyDate d ) /拷贝构造方法,创建新实例,值同参数实例 year=d.year;month=d.month;day=d.day; 调用语句如下: MyDate d1=new MyDate(2009,7,16);MyDate d2=new MyDate(d1);/调用拷贝构造方法复制实例MyDate d2=new MyDate(); /创建实例,默认日期值为(1970,1,1)d2.set(d1); /以d1对象引用的实例值设置d2引用的实例3.2.1 构造方法 4. 构造方法重载 nJava支持构造方法重载,重载的构造方法提供创建实例时 的多种初始化方案,如指定若干参数的构造方法、默认构 造方法、拷贝构造方法等。 n由于Java不支持会产生歧义的参数默认值,这些构造方法 必须重载,参数列表必须不同。3.2 类的封装性3.2.1 构造方法 3.2.2 this引用和instanceof 对象运算符 3.2.3 访问
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号