java语言基础教程 下载本文

System.out.println(\

for(i=0;i<2;i++){

for(j=0;j<3;j++)

System.out.print(a[i][j]+\

System.out.println(); }

System.out.println(\

for(i=0;i<3;i++){

for(j=0;j<4;j++)

System.out.print(b[i][j]+\

System.out.println(); }

System.out.println(\

for(i=0;i<2;i++){

for(j=0;j<4;j++)

System.out.print(c[i][j]+\

System.out.println(); } } }

其结果为:

C:\\>java MatrixMultiply

for(j=0;j<4;j++)

System.out.print(c[i][j]+\

System.out.println(); } } }

其结果为:

C:\\>java MatrixMultiply

***MatrixA*** 2 3 4 4 6 8

***MatrixB*** 1 5 2 8

5 9 10 -3

2 7 -5 -18

***MatrixC***

25 65 14 -65

50 130 28 -130 目录

Java入门(一) Java入门(二) Java入门(三) Java入门(四) Java入门(五) Java入门(六)

Java入门(七) Java入门(八) Java入门(九)

回应 删除 举报广告 2008-06-03 18:27:46 克洛泽大地 (DREG) 第六章 对象、类、包和接口

在前面几章中,我们对Java的简单数据类型、数组、运算符 作了详细的介绍。从现在开始,我们要深入到面向对象的编程 地方。本章中,我们首先讲述面向对象程序设计的基本概念及 点,然后讨论Java中的类、 对象、包和接口,最后进行小结,给出一个完整的Java文件的格? 。

§6.1面向对象的程序设计

面向过程的程序设计方法从解决问题的每一个步骤入手,? 适合于解决比较小的简单 问题。C语言采用面向过程的程序设计模型,但是由于C本身几? 没有支持代码重用的语言 结构,并且缺乏统一的接口,使得当程序的规模达到一定程度时, 程序员很难控制其复杂性 。

面向对象的程序设计方法则按照现实世界的特点来管理复 ?的事物,把它们抽象为对 象,具有自己的状态和行为,通过对消息的反应来完成一定的任 ?。

6.1.1对象、类和消息

一个对象就是变量和相关的方法的集合,其中变量表明对?的状态,方法表明对象所 具有的行为,下图表示了一个对象的特征:

从图中可以看出,一个对象的变量构成这个对象的核心,包 在它外面的方法使这个 对象和其它对象分离开来。例如:我们可以把汽车抽象为一个 象,用变量来表示它当前的 状态,如速度、油量、型号、所处的位置等,它的行为则可以有 ?速、刹车、换挡等。我 们操纵汽车时,不用去考虑汽车内部各个零件如何运作的细节, ?只需根据汽车可能的行 为使用相应的方法即可。实际上,面向对象的程序设计实现了 对象的封装,使我们不必 关心对象的行为是如何实现的这样一些细节。通过对对象的? 装,实现了模块化和信息隐 藏,有利于程序的可移植性和安全性,同时也利于对复杂对象的 ?理。

对象之间必须要进行交互来实现复杂的行为。例如,要使? 车加速,必须发给它一个 消息,告诉它进行何种动作(这里是加速)以及实现这种动作所? 的参数(这里是需要达到的 速度等)。下图表示了对象A与对象B间的消息传递过程。

从图中可以看出,一个消息包含三个方面的内容:

● 消息的接收者

● 接收对象应采用的方法

● 方法所需要的参数。

同时,接收消息的对象在执行相应的方法后,可能会给发送 息的对象返回一些信息 (如上例中,汽车的仪表上会出现已经达到的速度等)。 由于任何一个对象的所有行为都可以用方法来描述,通过? 息机制就可以完全实现对 象之间的交互,同时,处于不同处理过程甚至不同主机的对象间 ?可以通过消息实现交互 。

上面所说的对象是一个具体的事物,例如每辆汽车都是一? 不同的对象。但是多个对 象常常具有一些共性,如所有的汽车都有轮子、方向盘、常具 一些共性,如所有的汽车 都有轮子、方向盘、刹车装置等。于是我们抽象出一类对象? 共性,这就是类。类中定义 一类对象共有的变量和方法。把一个类实例化即生成该类的? 个对象。比如我们可以定 义一个汽车类来描述所有汽车的共性。通过类的定义人们可? 实现代码的复用。我们不 用去描述每一个对象(如某辆汽车),而是通过创建类(如汽车类) ?一个实例来创建该类的一 个对象,这大大减化了软件的设计。

6.1.2继承

通过对象、类,我们实现了封装,通过子类我们可以实现继 。

对于上例来说,公共汽车、出租车、货车等都是汽车,但它 是不同的汽车,除了具有 汽车的共性外,它们还具有自己的特点(如不同的操作方法,不? 的用途等)。这时我们可以 把它们作为汽车的子类来实现,它们继承父类(汽车)的所有状?和行为,同时增加自己的状 态和行为。通过父类和子类,我们实现了类的的层次,可以从最 ?般的类开始,逐步特殊化 ,定义一系列的子类。同时,通过继承也实现了代码的复用,使 序的复杂性线性地增长,而 不是呈几何级数增长。

在C++中支持多重继承,即一个类可以继承多个父类,这使得 象的实现变得非常复杂 且不可预料(设想多个父类拥有某些相同的变量和方法)。Java? 只支持单一继承,大大降低 了复杂度。在Java中通过接口可以实现多重继承,但接口的概念 ?简单,使用更方便,而且不 仅仅限于继承,它使多个不相关的类可以具有相同的方法。

6.1.3多态

Java通过方法重写和方法重载来实现多态。

通过方法重写,一个类中可以有多个具有相同名字的方法, ?传递给它们的不同个数 和类型的参数来决定使用哪种方法,这就是多态。例如,对于一和行为,同时增加自己的状 ?作图的类,它有一个 draw()方法用来画图或输出文字,我们可以传递给它一个字符串 一个矩形、一个圆形,甚 至还可以再指定作图的初始位置、图形的颜色等,对于每一种 现,只需实现一个新的 draw()方法即可,而不需要新起一个名字,这样大大简化了方法? 实现和调用,程序员和用户 都不需要记住很多的方法名,只需要传入相应的参数即可。 通过方法重载,子类可以重新实现父类的某些方法,使其具 自己的特征。例如对于 汽车类的加速方法,其子类(如赛车)中可能增加了一些新的部? 来改善提高加速性能,这时 可以在赛车类中重载父类的加速方法。重载隐藏了父类的方? ,使子类拥有自己具体实现 ,更进一步表明了与父类相比,子类所具有的特殊性。

本节中,我们对面向对象程序设计的一些基本内容作了讲? ,下面我们就分别讲述 Java是如何实现这些内容的。

§6.2类

类是组成Java程序的基本要素。它封装了一类对象的状态? 方法,是这一类对象的原 型。在前几章的例子中,我们已经定义了一些简单的类,如Helloo rldApp类。

public class HelloWorldApp{

public static void main(String args[]){

System.out.println(\