类是Java 的核心和本质。它是Java 语言的基础,因为类定义了对象的本性。既然类是面向对象程序设计Java 语言的基础,因此,你想要在Java 程序中实现的每一个概念都必须封装在类以内。
因为类是Java 的基础,所以在本章和以后几章中对其进行介绍。本章将介绍类的基本元素,并学习如何运用类来创建对象。同时也将学习方法、构造函数及this 这个要害字。
从本书的开始我们就使用类了。当然,使用的都是非常简单的类。在前面几章中创造的类主要都包含在main( ) 方法中,用它来表明Java 句法的基础。你将看到,类的功能实质上比你到目前为止看到的要强大得多。
也许理解类的最重要的事情就是它定义了一种新的数据类型。一旦定义后,就可以用这种新类型来创建该类型的对象。这样,类就是对象的模板(template ),而对象就是类的一个实例(instance)。既然一个对象就是一个类的实例,所以你经常看到object 和instance 这两个词可以互换使用。
6.1.1 类的通用格式
当你定义一个类时,你要声明它准确的格式和属性。你可以通过指定它包含的数据和操作数据的代码来定义类。尽管非常简单的类可能只包含代码或者只包含数据,但绝大多数实际的类都包含上述两者。你将看到,类的代码定义了该类数据的接口。
使用要害字class来创建类。在这一点上,类实际上被限制在它的完全格式中。类可以(并且经常)是一个组合体。类定义的通用格式如下所示:
class classname {
type instance-variable1;
type instance-variable2;
// ...
type instance-variableN;
type methodname1(parameter-list) {
// body of method
}
type methodname2(parameter-list) {
// body of method
}
// ...
type methodnameN(parameter-list) {
// body of method
}
}
在类中,数据或变量被称为实例变量(instance variables ),代码包含在方法(methods)内。定义在类中的方法和实例变量被称为类的成员(members )。在大多数类中,实例变量被定义在该类中的方法操作和存取。这样,方法决定该类中的数据如何使用。
定义在类中的变量被称为实例变量,这是因为类中的每个实例(也就是类的每个对象) 都包含它自己对这些变量的拷贝。这样,一个对象的数据是独立的且是惟一的。关于这一点我们将马上讨论,但是这是一个重要的概念,因此要早一点学习。
所有的方法和我们到目前为止用过的方法main() 的形式一样。但是,以后讲到的方法将不仅仅是被指定为static或public 。注重类的通用格式中并没有指定main() 方法。Java 类不需要main( ) 方法。main() 方法只是在定义您程序的起点时用到。而且,Java 小应用程序也不要求main( ) 方法。
注重:假如你有C++编程经验请注重,类的声明和方法的实现要存储在同一个地方并且不能被单独定义。由于所有类的定义必须全部定义在一个单个的源文件中,这有时会生成很大的.java 文件。在Java 中设计这个特征是因为从长远来说,在一个地方指明,定义以及实现将使代码更易于维护。
6.1.2 一个简单的类
让我们先从一个简单的例子来开始对类的研究。下面定义了一个名为box 的类,它定义了3个实例变量:width,height 和depth 。当前,box类不包含任何方法(但是随后将增加一些)。
class Box { double width; double height; double depth;
}
前面已经说过,一个类定义一个新的数据类型。在本例中,新的数据类型名为Box。你可以使用这个名字来声明Box 类型的对象。记住类声明只是创建一个模板(或类型描述),它并不会创建一个实际的对象。因此,上述代码不会生成任何Box 类型的对象实体。
要真正创建一个Box 对象,你必须使用下面的语句:
Box mybox = new Box(); // create a Box object called mybox
这个语句执行后,mybox 就是Box的一个实例了。因此,它将具有“物理的”真实性。现在,先不必考虑这个语句的一些细节问题。