Java程序案例教程 教学课件 ppt 作者 高职 田智 第1-5章_ 第5章

上传人:E**** 文档编号:89346811 上传时间:2019-05-23 格式:PPT 页数:161 大小:3.12MB
返回 下载 相关 举报
Java程序案例教程 教学课件 ppt 作者 高职 田智 第1-5章_ 第5章_第1页
第1页 / 共161页
Java程序案例教程 教学课件 ppt 作者 高职 田智 第1-5章_ 第5章_第2页
第2页 / 共161页
Java程序案例教程 教学课件 ppt 作者 高职 田智 第1-5章_ 第5章_第3页
第3页 / 共161页
Java程序案例教程 教学课件 ppt 作者 高职 田智 第1-5章_ 第5章_第4页
第4页 / 共161页
Java程序案例教程 教学课件 ppt 作者 高职 田智 第1-5章_ 第5章_第5页
第5页 / 共161页
点击查看更多>>
资源描述

《Java程序案例教程 教学课件 ppt 作者 高职 田智 第1-5章_ 第5章》由会员分享,可在线阅读,更多相关《Java程序案例教程 教学课件 ppt 作者 高职 田智 第1-5章_ 第5章(161页珍藏版)》请在金锄头文库上搜索。

1、第5章 类的基本形式,5.1 面向对象程序设计的基本概念 5.2 类与对象 5.3 类的封装性 5.4 在类内部调用方法 5.5 引用数据类型的传递 5.6 匿名对象 5.7 构造方法 5.8 对象的比较 5.9 this关键字的使用 5.10 static关键字的使用 5.11 构造方法的私有 5.12 对象数组的使用,5.1 面向对象程序设计的基本概念 早期的程序设计经历了“面向问题”、“面向过程”的阶段,随着计算机技术的发展,以及所要解决问题的复杂性的提高,以往的程序设计方法已经不能适应这种发展的需求,于是从20世纪70年代开始,相继出现了多种面向对象的程序设计语言(如图5-1所示),并

2、逐渐产生了面向对象的程序设计方法。面向对象的程序设计涉及对象、封装、类、继承及多态等基本概念。,图5-1 计算机语言的发展过程,5.1.1 对象 何谓面向对象呢?面向对象程序设计是将人们认识世界过程中普遍采用的思维方法应用到程序设计中。对象是现实世界中存在的事物,它们是有形的,如某个人、某种物品,也可以是无形的,如某项计划、某次商业交易。对象是构成现实世界的一个独立单位,人们对世界的认识,是从分析对象的特征入手的。 对象的特征分为静态特征和动态特征两种。静态特征指对象的外观、性质、属性等;动态特征指对象具有的功能、行为等。,客观事物是错综复杂的,但人们总是从某一目的出发,运用抽象分析的能力,从

3、众多特征中抽取最具代表性、最能反映对象本质的若干特征加以详细研究。人们将对象的静态特征抽象为属性,用数据来描述,在Java语言中称之为变量;人们将对象的动态特征抽象为行为,用一组代码来表示,完成对数据的操作,在Java语言中称之为方法。一个对象由一组属性和一组对属性进行操作的方法构成。,5.1.2 类 具有相同属性及相同行为的一组对象称为类。广义地讲,具有共同性质的事物的集合称为类。在面向对象程序设计中,类是一个独立的单位,它有一个类名,其内部包括成员变量,用于描述对象的属性,还包括类的成员方法,用于描述对象的行为。在Java程序设计中,类被认为是一种抽象数据类型,这种数据类型不但包括数据,还

4、包括方法。这大大扩充了数据类型的概念。 类是一个抽象的概念,要利用类的方式来解决问题,必须用类创建一个实例化的类对象,然后通过类对象去访问类的成员变量,去调用类的成员方法来实现程序的功能。这类,同于“汽车”本身是一个抽象的概念,只有使用了一辆具体的汽车,才能感受到汽车的功能。一个类可创建多个类对象,它们具有相同的属性模式,但可以具有不同的属性值。Java 程序为每一个类对象都开辟了内存空间,以便保存各自的属性值。 面向对象的程序设计具有如下三个主要特征: (1) 封装性; (2) 继承性; (3) 多态性。,5.1.3 封装性 封装是面向对象的方法所应遵循的一个重要原则。它有两个含义:一是指把

5、对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单位(即对象)中;另一层含义指“信息隐蔽”,把不需要让外界知道的信息隐藏起来。有些对象的属性及行为允许外界用户知道或使用,但不允许更改,而另一些属性或行为则不允许外界知晓,或只允许使用对象的功能,而尽可能隐蔽对象的功能实现细节。,封装机制在程序设计中表现为,把描述对象属性的变量及实现对象功能的方法合在一起,定义为一个程序单位,并保证外界不能任意更改其内部的属性值,也不能任意调动其内部的方法。封装机制的另一个特点是:为封装在一个整体内的变量及方法规定了不同级别的“可见性”或访问权限。 5.1.4 继承性 继承是面向对象方

6、法中的重要概念,并且是提高软件开发效率的重要手段。首先拥有反映事物一般特性的类,然后在其基础上派生出反映特殊事物的类。例如,已有汽车的类,该类中描述了汽车的普遍属性和行为,进一步再产生轿车的类,轿车的类继承于汽车类,轿车类不但拥有汽车类的全部属性和行为,还增加了轿车特有的属性和行为。,在Java程序设计中,已有的类可以是Java开发环境所提供的一批最基本的程序类库。用户开发的程序类继承这些已有的类。这样现在类所描述过的属性及行为,即已定义的变量和方法,在继承产生的类中完全可以使用。被继承的类称为父类或超类,而经继承产生的类称为子类或派生类。根据继承机制,派生类继承了超类的所有成员,并相应地增加

7、了自己的一些新的成员。面向对象程序设计中的继承机制大大增强了程序代码的可复用性,提高了软件的开发效率,降低了程序产生错误的可能性,也为程序的修改扩充提供了便利。若一个子类只允许继承一个父类,称为单继承;若允许继承多个父类,称为多继承。目前许多面向对象程序设计语言不支持多继承。Java语言通过接口(interface)的方式来弥补由于Java不支持多继承而带来的子类不能享用多个父类成员的缺憾。,5.1.5 类的多态性 多态是面向对象程序设计的又一个重要特征。多态是指允许程序中出现重名现象。Java 语言中含有方法重载与成员覆盖两种形式的多态。方法重载是指在一个类中,允许多个方法使用同一个名字,但

8、方法的参数不同,完成的功能也不同。成员覆盖是指子类与父类允许具有相同的变量名称,但数据类型不同,允许具有相同的方法名称,但完成的功能不同。 多态的特性使程序的抽象程度和简捷程度更高,有助于程序设计人员对程序的分组进行协同开发。,5.2 类 与 对 象 面向对象的编程思想力图使在计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能地一致,类(class)和对象(object)就是面向对象方法的核心概念。 类是对某一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的个体,因而也称实例(Instance)。图5-2就是一个说明类与对象的典型范例。 图5-2中,汽车设计图就是“类”

9、,由这个图纸设计出来的若干汽车就是按照该类产生的“对象”。,图5-2 类与对象的实例化说明,5.2.1 类的声明 在使用类之前,必须先定义它,然后才可利用所定义的类来声明变量,并创建对象。类定义的语法如下:,程序说明: (1) 用class声明了一个名为Person的类,这里Person是类的名称。 (2) 第3、4行声明了两个属性name和age,name为String型(字符串类型),age为int型(整型)。 (3) 第58行声明了一个talk()方法,此方法用于向屏幕打印信息。 为了更好地说明类的关系,请参见图5-3。,图5-3 Person类图,5.2.2 创建新的对象 在实际中单单

10、有类是不够的,类提供的只是一个模板,必须依照它创建出对象之后才可以使用。下面定义了由类产生对象的基本形式: 类名 对象名 = new 类名() ; 创建属于某类的对象,需要通过下面两个步骤来实现: (1) 声明指向“由类所创建的对象”的变量。 (2) 利用new创建新的对象,并指派给先前所创建的变量。 如果要创建Person类的对象,可用下列的语句来实现:,Person p; / 先声明一个Person类的对象p p = new Person() ; / 用new关键字实例化Person类的对象p 当然也可以用下面这种形式来声明变量: Person p = new Person() ; / 声

11、明Person对象p并直接实例化此对象 对象只有在实例化之后才能被使用,而实例化对象的关键字就是new。对象实例化过程如图5-4所示。,图 5-4 Person类对象的实例化过程,由图5-4可以看出,当语句执行到Person p时,只是在栈内存中声明了一个Person的对象p,但是这时p并没有在堆内存中开辟空间,所以这时的p是一个未实例化的对象,用new关键字实际上就是开辟堆内存,把堆内存的引用赋给了p,这时的p才称为实例化对象。 如果要访问对象中的某个成员变量或方法,可以通过下面语法来实现: 访问属性:对象名称.属性名。 访问方法:对象名称.方法名()。,输出结果: 我是:张三,今年:25岁

12、 程序说明: (1) 第6行声明了一个Person类的实例对象 p,并直接实例化此对象。 (2) 第7、8行给p对象中的属性赋值。 (3) 第9行调用talk()方法,在屏幕上输出信息。 参照上述程序代码与图5-5的内容即可了解到Java是如何对对象成员进行访问操作的。,图5-5 对Person对象p的访问操作过程,5.2.3 创建多个新对象 在例5-3的程序中,只建立了一个Person的对象p,如果需要创建多个对象,则可以依照由类产生对象的基本形式产生多个对象。 【例5-4】 TestPersonDemo1.java。,程序说明: (1) 第19行声明了一个新的类Person,类中有name

13、、age两个属性,还有一个talk()方法用于输出信息。 (2) 第1415行声明了Person的两个实例对象p1、p2。 (3) 第17、18行给p1对象的属性赋值。 (4) 第20、21行给p2对象的属性赋值。 (5) 第23、24行分别用p1、p2调用Person类中的talk()方法,用于在屏幕上打印信息。 上述程序首先声明了两个对象p1和p2,之后分别为p1与p2赋值。可以发现,p1与p2赋的值互不影响,此关系可由图5-6表示出来。,图5-6 Person中p1与p2的内存分配图,案例1 对象组合案例 【案例描述】 编写一个Circle类,该类的对象可以计算圆的面积。 【代码与注释】

14、 程序名称为Circle.java。 程序代码如下:,5.3 类 的 封 装 性 【例5-5】 TestPersonDemo2.java。,输出结果: 我是:张三,今年:-25岁 程序说明: (1) 第19行声明了一个新的类Person,类中有name、age两个属性,还有一个talk()方法用于输出信息。 (2) 第15行声明并实例化Person的对象p。 (3) 第1721行分别为p对象中的属性赋值,并调用talk()方法。 由上面的程序可以看出,在程序的第19行将年龄(age)赋值为-25,这明显是一个不合法的数据,最终程序在调用talk()方法时才会打印出这种错误的信息。,程序说明:

15、(1) 第19行声明了一个新的类Person,类中有name、age两个属性,还有一个talk()方法用于输出信息。与前面不同的是,这里的属性在声明时前面都加上了private关键字。 (2) 第15行声明并实例化Person类的对象p。 (3) 第1721行分别为p对象中的属性赋值,并调用talk()方法。 可以看出,本程序与例5-5除了在声明属性上有些区别外,并没有其他区别,而就是这一个小小的关键字,导致程序连编译都无法通过,所提示的错误为:属性(name、age)为私有的,所以不能由对象直接进行访问。,程序说明: (1) 第925行加入了一些setXxx()、getXxx()方法,主要用

16、来设置和取得类中的私有属性。,(2) 第1317行设置年龄时在程序中加了判断语句,如果传入的数值大于0,则将值赋给age属性。 (3) 第35行调用了 Person 类中的 setName()方法,并赋值为“张三”。 (4) 第37行调用了setAge()方法,同时传进了一个-25的不合理年龄。 可以发现在本程序中,传进了一个-25的不合理数值,这样在设置Person中的属性时因为不满足条件而不能被设置成功,所以age的值依然为自己的默认值0。这样在输出时可以发现,那些错误的数据并没有被赋到属性上,而只输出了默认值。,用private声明的属性或方法只能在其类的内部被调用,而不能在类的外部被调用。读者可以先暂时简单理解为:在类的外部不能用对象去调用private声明的属性或方法。 下面程序修改自例5-7,在这里将tal

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号