Java大学实用教程第四章

上传人:豆浆 文档编号:48543806 上传时间:2018-07-17 格式:PPT 页数:62 大小:703.50KB
返回 下载 相关 举报
Java大学实用教程第四章_第1页
第1页 / 共62页
Java大学实用教程第四章_第2页
第2页 / 共62页
Java大学实用教程第四章_第3页
第3页 / 共62页
Java大学实用教程第四章_第4页
第4页 / 共62页
Java大学实用教程第四章_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《Java大学实用教程第四章》由会员分享,可在线阅读,更多相关《Java大学实用教程第四章(62页珍藏版)》请在金锄头文库上搜索。

1、 本章导读n 类声明和类体及其构成n 构造方法与对象的创建n 对象的引用与实体n 成员变量、方法和方法重载n 关键字thisn包第4章 类与对象本章导读nimport语句n访问权限n对象的组合n基本类型数据的类包装n反编译和文档生成器nJAR文件的使用4.1 面向对象编程 1. 面向对象编程的三个特性 (1)封装:面向对象编程核心思想之一就是将数据和对数据的操作封装在 一起。通过抽象,即从具体的实例中抽取共同的性质形成一般的概念,比如 类的概念。人们经常谈到的机动车类就是从具体的实例中抽取共同的属性和功能形成 的一个概念,那么一个具体的轿车就是机动车类的一个实例,即对象。一个对象将自己的数据和

2、对这些数据的操作合理有效地封装在一起,例 如,每辆轿车调用“加速”、“减速”改变的都是自己的运行速度。 (2)继承继承体现了一种先进的编程模式。子类可以继承父类的属性和功能,即继 承了父类所具有的数据和数据上的操作,同时又可以增添子类独有的数据和 数据上的操。(3)多态 多态是面向对象编程的又一重要特征。有两种意义的多态,一种是操作名称 的多态,即有多个操作具有相同的名字,但这些操作所接收的消息类型必须 不同。另一种多态是和继承有关的多态,是指同一个操作被不同类型对象调 用时可能产生不同的行为。2.提出一个简单的问题 例题4-1能输出圆的面积 ,效果如图4-1所示。通过运行上述Java应用程序

3、注意到这样一个事实:如果其他 Java应用程序也想计算圆的面积,同样需要知道计算圆面积的算 法,即也需要编写和这里同样多的代码。现在提出如下问题:能否将和圆有关的数据以及计算圆面积的代码进行 封装,使得需要计算圆面积的Java应用程序的主类无需 编写计算面积的代码就可以计算出圆的面积呢? 3.简单的Circle类 面向对象的一个重要思想就是通过抽象得到类,即将某些数据以及针对这 些数据上的操作封装在一个类中,也就是说,抽象的关键键点有两点一是数据, 二是数据上的操作。我们对 所观察的圆做如下抽象:圆具有半径之属性。可以使用半径计算出圆的面积。现在根据如上的抽象,编写出如下的Circle类。 c

4、lass Circle double radius; /圆圆的半径double getArea() /计计算面积积的方法double area=3.14*radius*radius;return area; (1)类声明:上述代码第一行中的class Circle称作类声明,Circle是类名。 (2)类体:类声明之后的一对大括号“”,“”以及它们之间的内容称作类体 ,大括号之间的内容称作类体的内容。4.使用Circle类创建对象 在例子4-2的主类中使用Circle类创 建对象,该对 象可以完成计算圆面积的任 务(主类不必知道计算圆面积的算法) 。 由于类也是一种数据类型,因此可以使用类来声

5、明一个变量,那么,在Java语 言中,用类声明的变量就称之为一个对象。 用Circle声明一个名字为circle的对象的代码如下:Circle circle; 为Circle类声明的circle对象分配变量的代码如下:circle = new Circle(); 对象通过使用“.”运算符操作自己的变量和调用方法。 对象操作自己的变量的的格式为:对象.变量;例如,circle.radius=100; 调用方法的格式为: 对象.方法;例如,circle.getArea(); 在例子4-2中的Example4_2.java及编译 得到的Circle类的字节码 文件 Circle.class保存在C:

6、ch4中 ,程序运行效果如图4.2。5. Java应用的程序的基本结构 一个Java应用程序是由若干个类所构成,但必须有一个主类,即含有main方 法的类,Java应用程序总是从主类的main方法开始执行。在编写一个Java应 用程序时,可以编写若干个Java源文件,每个源文件编译 后产生每个类的字 节码 文件。因此,经常需要进行如下的操作。 将应用程序涉及的Java源文件保存在相同的目录中,分别编译 通过,得到 Java应用程序所需要的字节码 文件。 运行主类 注:如果应用程序的主类的源文件和其他的源文件在同一目录中,也可以只编 译主类的源文件,Java系统会自动地先编译主类需要的其它源文件

7、。 Java程序以类为“基本单位”,即一个Java程序就是由若干个类所构成。一个 Java程序可以将它使用的各个类分别存放在不同的源文件中,也可以将它使用 的类存放在一个源文件中。一个源文件中的类可以被多个Java程序使用,从编 译角度看,每个源文件都是一个独立的编译单位,当程序需要修改某个类时 , 只需要重新编译该类 所在的源文件即可,不必重新编译 其他类所在的源文件 ,这非常有利于系统的维护 。4.2 类声明和类体 类是组成Java程序的基本要素。类封装了一类对象的状态和 方法。类是用来定义对象的模板。可以用类创建对象,当使用一 个类创建了一个对象时,我们也说给出了这个类的一个实例。在语法

8、上,类由两部分构成:类声明和类体。基本格式为:class 类名 类体的内容 class是关键字,用来定义类。“class 类名”是类的声明部分,类名必须是合法的Java标识符。两个大括号“”、“”以及之间的内容称作类体。例如class 机动车 类名的命名习惯习惯上,类名的第一个字母大写,但这不是必须的。 类的名字不能是Java中的关键字,要符合标识符规定,即名字 可以由字母、下划线、数字或美元符号组成,并且第一个字符 不能是数字。但给类命名时,最好遵守下列习惯:(1)如果类名使用拉丁字母,那么名字的首字母使用大写 字母,如Hello、Time、,People等。(2)类名最好容易识别、见名知意

9、。当类名由几个“单词” 复合而成时,每个单词的首写字母使用大写,如BeijingTime、 AmericanGame、HelloChina等。 4.3 类体的构成 写类的目的是为了描述一类事物共有的属性和功 能,即将数据和对数据的操作封装在一起,这一过程 由类体来实现。类体内容可以有两种类型的成员:1成员变量:通过变量声明定义的变量,称作成 员变量或域,用来刻画类创建的对象的属性。2方法:方法是类体的重要成员之一。其中的构 造方法是具有特殊地位的方法,供类创建对象时使用 ,用来给出类所创建的对象的初始状态,另一类方法 ,可以由类所创建的对象调用,对象调用这些方法操 作成员变量形成一定的算法,体

10、现对象具有某种功能 。类名为“机动车”的类类体内容的变量定义部分定义了2个float类型的变量:“weight”、“height” 和一个int型变量“speed”;方法定义部分定义了3个方法:“changSpeed”、 “getWeight”和“getHeight”。 class 机动车 int speed; /变量定义部分float weight,height; /变量定义部分void changSpeed(int newSpeed) /方法定义speed=newSpeed; float getWeight() /方法定义return weight;float getHeight() /方

11、法定义return height; 关于成员变量成员变量的类型可以是Java中的任何一种数据类 型,包括前面学习过的基本类型:整型、浮点型、字 符型、数组以及后面要学习的对象及接口。成员变量在整个类内都有效,与它在类体中书写的 先后位置无关(“机动车” )。在定义类的成员变量时可以同时赋予初值,表明类所创建的 对象的初始状态。注意 : 对成员变量的操作只能放在方法中,方法可以 对成员变量进行操作形成算法,见P41例子。4.4 构造方法与对象的创建 类中有一部分方法称作构造方法,类创建对象时需使用构造方法,以便 给类所创建的对象一个合理的初始状态。构造方法是一种特殊方法,它的名字必须与它所在的类

12、的名字完全相同, 并且不返回任何数据类型,即它是void型,但void必须省略不写。Java允许一个类中有若干个构造方法,但这些构造方法的参数必须不同, 即或者是参数的个数不同,或者是参数的类型不同。下面的Rect类有两个构 造方法: class Rect double sizdA,siddB;Rect() /无参数构造方法。Rect(double a,double b) /有参数构造方法。sideA=a;sideB=b;double computerArea()return sideA*sideB;double computerGirth()return (sizeA+sideB)*2; 1

13、对象的声明一般格式为: 类的名字 对象名字;如: Rect rectangleOne; 声明对象变量rectangleOne后,rectangleOne的内存中还没 有存放数据,也就是说该对象还没有“引用”任何实体,我们 称这时的rectangleOne是一个空对象。 2为声明的对象分配成员变量使用new运算符和类的构造方法为声明的对象分配成员变量,如果类中 没有构造方法,系统会调用默认的构造方法(默认的构造方法是无参数的, 你一定还记得构造方法的名字必须和类名相同这一规定),上述的Rect类提 供了两个构造方法,下面都是合法的创建对象的语句:rectangleOne =new Rect();

14、或rectangleOne =new Rect(10,20); 此代码会实现下述两件事: ( 1)为成员变量分配内存空间,然后执行构造方法中的语句 。( 2 )给出一个信息,已确保这些成员变量是属于对象 rectangleOne的 。对象的声明和分配成员变量两个步骤可以用 一个等价的步骤完成,如Rect rectangleOne =new Rect(10,20); 3创建多个不同的对象一个类通过使用new运算符可以创建多个不同的对象,这些对象将被 分配不同的内存空间,因此,改变其中一个对象的状态不会影响其它对象的 状态。例如,我们使用前面的Rect类创建两个对象:Rect rectangleO

15、ne,rectangleTwo;rectangleOne =new Rect(10,20);rectangleTwo =new Rect(33,66);当创建对象rectangleOne时,Rect类中的成员变量sizeA、sizeB被分配内存 空间,并返回一个引用给ectangleOne;当再创建一个对象rectangleTwo时,Rect类中的成员变量sizeA、sizeB再 一次被分配内存空间,并返回一个 引用给rectangleTwo 。内存模型如图4-5 所示。 4使用对象对象不仅可以操作自己的变量改变状态,而且还拥有了使用 创建它的那个类中的方法的能力,对象通过使用这些方法可以产 生一定的行为。通过使用运算符“.”,对象可以实现对自己的变量访问 和方法 的调用。(1)对象操作自己的变量(对象的属性)(2)对象调用类中的方法(对象的功能) (3)体现封装 当对象调用方法时,方法中出现的成员变量就是 指该对象的成员变量。 下面例子4-3中,“Lader”类创建了2个对象laderOne,laderTwo.效果如图 4-6所示.4.5 对象的引用与实体 我们已经知道,当用类创建一个对象时,成员变量被分配内存空间,这 些内存空间称做该对象的实体或变量,而对象中存放着引用,以确保这些变 量由该对象操作使用。因此,如果

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

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

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