Java 类是 Java 应用程序、工具包、框架、API 等的核心构建模块之一。一个小型的 Java 应用可能仅包含一个带有 main() 方法的 Java 类,如 Java main 方法教程 中所述。但随着你的 Java 应用不断增长,将所有代码都保留在同一个类中会使代码越来越难以理解和维护。因此,将 Java 代码拆分成多个类会更加有益。
Java 类是一个逻辑上紧密相关的 Java 代码单元。一个 Java 类可以包含数据(变量)和操作(方法)。当程序变得太大而无法舒适地放在单个类中时,将变量及其相关操作组织到 Java 类中,有助于更好地结构化你的 Java 程序。每个 Java 类必须保存在自己的文件中。因此,随着类的增长,你正在编辑的文件也会变大,使得你在头脑中保持整体概览变得更加困难。
你的 Java 应用通常至少需要包含一个 Java 类,但也可以根据需要划分为任意数量的类。此外,Java 自带大量预定义的类,因此你不必自己编写每一个小功能。
Java 类的构建模块
Java 类可以包含以下构建模块:
- 字段(Fields)
- 构造函数(Constructors)
- 方法(Methods)
- 嵌套类(Nested Classes)
字段 是属于该类或其实例(对象)的变量(数据)。稍后我会介绍实例的概念。字段在 Java 字段教程 中有更详细的说明。
构造函数 是用于初始化类实例的特殊方法。构造函数通常用于设置实例中字段的值。构造函数在 Java 构造函数教程 中有更详细的说明。
方法 是类或其实例可以执行的操作。例如,一个方法可以对输入参数执行操作,或更改对象内部字段的值等。方法在 Java 方法教程 中有更详细的说明。
嵌套类 是定义在另一个类内部的 Java 类。嵌套类通常仅供包含它的外部类内部使用,或者与外部类协同使用。嵌套类在 Java 嵌套类教程 中有更详细的说明。
并非所有 Java 类都同时包含字段、构造函数和方法。有时你会遇到只包含字段(数据)的类,有时也会遇到只包含方法(操作)的类。这取决于该 Java 类的具体用途。
在 Java 中定义类
在 Java 中定义一个类只需要如下代码:
public class MyClass {
}
这段代码定义了一个名为 MyClass 的公共 Java 类。该类没有字段、构造函数或方法。
.java 文件
上述类定义应保存在一个名为 MyClass.java 的独立文件中。Java 文件的名称必须与其中包含的类名一致,并以 .java 作为文件扩展名。同时,请确保文件名中的大小写与类名完全一致。
每个 Java 文件中只应包含一个类定义(除非该类包含某种形式的内部类)。内部类的相关内容请参阅 Java 嵌套类教程。
包含字段的类
如前所述,Java 类可以包含以变量形式存在的数据。属于类的变量通常称为“字段”。
下面的例子展示了一个用于表示汽车的 Java 类。因此,该类被命名为 Car,并包含三个字段。以下是该 Java 类的代码:
public class Car {
public String brand = null;
public String model = null;
public String color = null;
}
此代码定义了一个名为 Car 的 Java 类。Car 类包含三个字段,但没有方法,只有字段声明。有关字段的更多内容,请参阅 Java 字段。
包含构造函数的类
Java 类可以拥有构造函数。构造函数是一种特殊方法,在创建该类的对象时被调用(稍后解释)。其目的是初始化类中的字段(也称为“内部状态”)。以下是一个包含两个构造函数的 Java 类示例:
public class Car {
public String brand = null;
public String model = null;
public String color = null;
public Car() {
}
public Car(String theBrand, String theModel, String theColor) {
this.brand = theBrand;
this.model = theModel;
this.color = theColor;
}
}
这两个与类同名且未指定返回类型的方法就是构造函数。第一个构造函数不接受任何参数,第二个则接受三个参数。接受三个参数的构造函数会将这些参数的值存储到所创建对象的字段中。有关构造函数的更多内容,请参阅 Java 构造函数教程。
包含方法的类
Java 类也可以包含操作,这些操作通常称为方法。Java 方法包含一些 Java 指令,通常会对类中的字段或调用方法时传入的参数(也是变量)执行某些操作。
以下是前一节中的 Car 类示例,添加了一个方法:
public class Car {
public String brand = null;
public String model = null;
public String color = null;
public void setColor(String newColor) {
this.color = newColor;
}
}
在上面的类定义中,我添加了一个 setColor() 方法。调用该方法时,它会将内部的 color 变量(字段)设置为新值。有关方法的更多内容,请参阅 方法。
包含嵌套类的类
如前所述,你可以在一个 Java 类内部定义嵌套类。以下是在 Java 类中定义嵌套类的示例:
public class MyClass {
public static class MyNestedClass {
}
}
在上面的示例中,外部类名为 MyClass,嵌套类名为 MyNestedClass。这个例子中的两个类都没有字段或方法,但外部类和嵌套类都可以根据需要包含任意数量的字段和方法。有关嵌套类的更多信息,请参阅 Java 嵌套类教程。
类与对象
Java 类是该类对象外观的模板。换句话说,前面提到的 Car 类就是 Car 对象的模板。
要创建某个类的对象,需使用 new 关键字。示例如下:
Car car1 = new Car();
Car car2 = new Car();
Car car3 = new Car();
car1.setColor("red");
car2.setColor("green");
car3.setColor("blue");
此示例创建了三个 Car 变量,并分别为每个变量分配了一个新的 Car 类实例。每个变量现在都引用一个 Car 对象,且每个变量引用的是不同的 Car 对象。这样的对象也被称为实例。如果你更改其中一个对象的字段,其他对象的字段不会受到影响。因此,不同对象(即使是同一类的对象)的字段值可以彼此独立变化。
在为三个 Car 对象创建实例后,分别对每个对象调用了 setColor() 方法。这样,每辆 Car 对象的颜色(以文本形式表示)就被单独设置了。
创建某个类的对象也称为“实例化”对象。该对象也因此被称为给定类的“实例”。例如,上述每个 Car 对象也可称为 Car 类的一个实例,或简称为“Car 实例”。