[工学]Java第2版第6章

上传人:豆浆 文档编号:49681989 上传时间:2018-08-01 格式:PPT 页数:43 大小:207.50KB
返回 下载 相关 举报
[工学]Java第2版第6章_第1页
第1页 / 共43页
[工学]Java第2版第6章_第2页
第2页 / 共43页
[工学]Java第2版第6章_第3页
第3页 / 共43页
[工学]Java第2版第6章_第4页
第4页 / 共43页
[工学]Java第2版第6章_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《[工学]Java第2版第6章》由会员分享,可在线阅读,更多相关《[工学]Java第2版第6章(43页珍藏版)》请在金锄头文库上搜索。

1、第6章陈国君类与对象Date1通过本章的学习,主要掌握以下知识点:类的基本概念 对象的创建与使用 对象的使用 成员的调用本章的重点:创建类本章的难点:类修饰符成员数量与成员方法修饰符 Date2在前面的章节中,对Java的简单数据类型、数组、运算符和表达式及流程控制的方法作了详细的介绍。从本章开始将介绍面向对象的程序设计方法。面向对象的编程思想是力图使在计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能的一致。所以在面向对象的程序设计中,类(Class)和对象(Object)是面向对象程序设计方法中最核心的概念。Date36.1 类的基本概念类的概念是为了让程序设计语言能更清楚地描 述

2、日常生活中的事物。类是对某一类事物的描述, 是抽象的、概念上的定义;而对象则是实际存在的 属该类事物的具体的个体,因而也称为实例 (Instance)。下面用一个现实生活中的例子来说明 类与对象的概念。图6.1所示的是一个“汽车类” 与“汽车实例”的例子。 Date4汽车设计图第1辆第2辆第3辆图6.1 汽车类与汽车的实例Date5其中,汽车设计图就是“汽车类”, 由这个图纸设计出来的若干个汽车就是按 照该类生产出的“汽车对象”。 Date6一般来说,类是由数据成员与函数成员封装而成的,其中数据成员表示类的属性,函数成员表示类的行为。下面用Java类来描述圆柱体,并能保存圆柱体的信息(底半径和

3、高),而且还能利用此类计算出圆柱体的面积和体积。 Date7每一个圆柱体,无论尺寸大小,都有底半径和高这两个属性,而这两个属性就是圆柱体的数据,因此就本例而言,radius(半径)与height(高)可以说是圆柱体类的数据成员(data member)。 除了底半径和高这两个数据之外,还可以把计算底面积与体积这两个函数纳入圆柱体类里,变成类的函数成员(function member)。Java称这种封装于类内的函数为“方法”(method)。 Date8所谓的“类”就是把事物的数据与相关功能 封装(Encapsulate)在一起,形成一种特殊的数 据结构,用以表达真实事物的一种抽象。 “Enc

4、apsulate”原意是“将装入胶囊内” ,现在胶囊就是类,而成员变量与成员方法便是 被封入的东西。图6.2为圆柱体类的示意图。 由图6.2可知,圆柱体类的成员变量有pi、 radius与height,而成员方法则有计算面积的 area()与计算体积的volume ()。Date9pi radius heightarea() volume ()成员变量成员方法图6.2 圆柱体类Date106.2 定义类1类的一般结构 类修饰符 class 类名称 声明成员变量修饰符 数据类型 成员变量名称;修饰符 返回值的数据类型 方法名(参数1,参数 2,)语句序列;return 表达式; Date11其中

5、class前面方括号“”中的类修饰符是可选项,用来说明类的特殊性质,类修饰符分为访问控制符、抽象类说明符、友元类说明符和最终类说明符四种。各修饰符的含义如表6.1所示。 Date12表6.1类修饰符的含义修饰饰符含 义义public将一个类声明为公共类,它可以被任何对对象访问访问 ,一个程序的主类必须是公共类。abstract将一个类声明为抽象类,没有实现实现 的方法,需要子类类提供方法的实现 。final将一个类声明为最终类 即非继承类,表示它不能被其他类类所继继承。friendly友元类型,默认的修饰符,只有在相同包中的对对象才能使用这样 的类。Date132成员变量一个类的成员变量描述了

6、该类的内部信息 ,一个成员变量可以是简单变量,也可以是对 象、数组等其他结构型数据。成员变量的格式 如下: 修饰符 变量类型 变量名 =初值Date14表6.2成员变量修饰符的含义修饰饰符含 义义public公共访问访问 控制符。指定该变该变 量为为公共的,它可以被任何对对象的方法访问访问 。private私有访问访问 控制符。指定该变该变 量只允许许自己类类的方法访问访问 ,其他任何类类(包括子 类类)中的方法均不能访问访问 此变变量。protected保护访问护访问 控制符。指定该变该变 量可以被它自己的类类及其子类访问类访问 ,在子类类中可以 覆盖此变变量。friendly默认认的友元访

7、问访问 控制符,在同一个包中的其他类类可以访问访问 此变变量,而其他包中 的类类不能访问该变访问该变 量。final最终终修饰饰符。指定此变变量的值值不能改变变。static静态态修饰饰符。指定该变该变 量被所有对对象共享,即所有的实实例都可使用该变该变 量。transient过过渡修饰饰符。指定该变该变 量是一个系统统保留,暂暂无特别别作用的临时临时 性变变量。volatile易失修饰饰符。指定该变该变 量可以同时时被几个线线程控制和修改。Date153成员方法 声明方法的语法格式如下: 修饰符 返回值的数据类型 方法名(参数1, 参数2,) 语句序列;return 表达式; 方法的含义如表

8、6.3所示。 Date16表6.3成员方法修饰符的含义修饰饰符含 义义public公共访问访问 控制符。指定该该方法为为公共的,它可以被任何对对象的方法访问访问 。private私有访问访问 控制符。指定该该方法只允许许自己类类的方法访问访问 ,其他任何类类(包 括子类类)中的方法均不能访问访问 此方法。protected保护访问护访问 控制符。指定该该方法可以被它的类类及其子类访问类访问 。friendly默认认的友元访问访问 控制符,在同一个包中的其他类类可以访问访问 此方法,而其他包 中的类类不能访问该访问该 方法。final最终终修饰饰符。指定该该方法不能被重载载。static静态态修

9、饰饰符。指定不需要实实例化一个对对象就可以激活的方法。synchronized同步修饰饰符。在多线线程程序中,该该修饰饰符用于在运行前,对对它所属的方法加 锁锁,以防止其他线线程访问访问 ,运行结结束后解锁锁。native本地修饰饰符。指定此方法的方法体是用其他语语言(如C)在程序外部编编写的 。Date17下面定义前面叙述过的圆柱体类如下: class Cylinder /定义圆柱体类Cylinder double radius; /声明成员变量radiusint height; /声明成员变量heightdouble pi=3.14; /为数据成员赋初值void area( ) /定义成员

10、方法area(),用来计算底面积System.out.println(“圆柱底面积=”+ pi*radius* radius);void volume( ) /定义成员方法volume (),用来计算体积System.out.println(“圆柱体体积=”+(pi*radius* radius)*height); Date18(1)从语法形式上看,成员变量是属于 类的,而局部变量是在方法中定义的变量或方 法的参数;成员变量可以被public、private 、static等修饰符所修饰,而局部变量则不能 被访问控制修饰符及static所修饰;成员变量 和局部变量都可以被final所修饰。 4

11、. 成员变量与局部变量的区别Date19(2)从变量在内存中的存储方式上看,成员变量是对象的一部分,而对象是存在于堆内存的,而局部变量是存在于栈内存的。(3)从变量在内存中的存在时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而产生,随着方法调用的结束而自动消失。Date20(4)成员变量如果没有被赋初值,则会自 动以类型的默认值赋值(有一种情况例外,被 final修饰但没有被static修饰的成员变量必须 显式地赋值);而局部变量则不会自动赋值,必 须显式地赋值后才能使用。Date216.3 对象的创建与使用对象是整个面向对象程序设计的理论基础,由于面向对象

12、程序中使用类来创建对象,所以可以将对象理解为一种新型的变量,它保存着一些比较有用的数据,但可以要求它对自身进行操作。 Date22通过如下的两个步骤来创建对象: 声明指向“由类所创建的对象”的变量; 利用new运算符创建新的对象,并指派给前面所创建的 变量。 例如,要创建圆柱体类的对象,可用下列的语法来创 建 Cylinder volu; /声明指向对象的变量volu volu=new Cylinder(); /利用new创建新的对象,并 让变量volu指向它6.3.1 创建对象Date23另外在创建对象时也可以将上面的两个语句合 并成一行,即在声明对象的同时使用new运算符创 建对象。如:C

13、ylinder volu=new Cylinder(); Date24因为在一个方法内部的变量必须进行初始化,否则编译无法通过。当一个对象被创建时,会对其中各种类型的成员变量按表6.4自动进行初始化。除了基本类型之外的变量都是引用类型。所以在图6.3中所示的对象内存状态图中,成员变量radius的初始值为0。Date25表6.4 成员变量的初始值成员变员变 量类类型初始值值byte0short0int0long0Lfloat0.0Fdouble0.0Dcharu0000(表示为为空)boolwanfalse所有引用类类型nullDate266.3.2 对象的使用创建新的对象之后,就可以对对象的

14、成员进 行访问。通过对象来引用对象成员的格式如下: . 在对象名和对象成员之间用“.”相连,通 过这种引用可以访问对象的成员。 例如,若将对象volu的半径赋值为2.8,把 高赋值为5,其代码为: volu.radius=2.8; volu.height=5; Date27【例6.1】定义一个圆柱体类,并创建相应的对象,然后计算圆柱体的底面积与 体积。 Date28/app6_1.java 圆柱体类Cylinder class Cylinder /定义Cylinder类 double radius; /定义成员变量radiusint height; /定义成员变量heightdouble pi

15、=3.14;void area() /定义无返回值的方法area(),用来计算圆柱底 面积System.out.println(“底面积=”+pi* radius* radius);double volume () /定义返回值为double型的方法volume (),计算 体积return (pi* radius* radius)*height; 【 例6.1】续Date29public class app6_1 /定义公共类 public static void main(String args ) /程序执行的起始 点Cylinder volu;volu=new Cylinder();

16、/创建新的对象volu.radius=2.8; /赋值圆柱volu的底半径volu.height=5; /赋值圆柱volu的高System.out.println(“底圆半径=”+volu.radius); /输出底圆 半径System.out.println(“圆柱的高=”+volu.height); /输出圆柱 的高System.out.print(“圆柱”);volu.area(); /输出面积System.out.println(“圆柱体体积=”+volu.volume(); /输出 体积 【例6.1】续Date30程序运行结果如下: 底圆半径=2.8 圆柱的高=5 圆柱底面积=24.6176 圆柱体体积=123.088【例6.1】续Date31【例6.3】以圆柱体类Cylinder为例来介绍在类内部调用自己的 方法。6.3.3 在类定义内调用方法/

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

当前位置:首页 > 行业资料 > 其它行业文档

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