创建类
声明类
在名为 对象、类和接口 的部分中,面向对象概念的介绍使用了一个 Bicycle
类作为示例,其中赛车、山地自行车和双人自行车作为子类。以下是一个可能的 Bicycle
类实现的示例代码,以概述类声明。后续部分将逐步备份并解释类声明。目前,不要担心细节。
public class Bicycle {
// the Bicycle class has
// three fields
public int cadence;
public int gear;
public int speed;
// the Bicycle class has
// one constructor
public Bicycle(int startCadence, int startSpeed, int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
// the Bicycle class has
// four methods
public void setCadence(int newValue) {
cadence = newValue;
}
public void setGear(int newValue) {
gear = newValue;
}
public void applyBrake(int decrement) {
speed -= decrement;
}
public void speedUp(int increment) {
speed += increment;
}
}
MountainBike
类的类声明,它是 Bicycle
的子类,可能如下所示
public class MountainBike extends Bicycle {
// the MountainBike subclass has
// one field
public int seatHeight;
// the MountainBike subclass has
// one constructor
public MountainBike(int startHeight, int startCadence,
int startSpeed, int startGear) {
super(startCadence, startSpeed, startGear);
seatHeight = startHeight;
}
// the MountainBike subclass has
// one method
public void setHeight(int newValue) {
seatHeight = newValue;
}
}
MountainBike
继承了 Bicycle
的所有字段和方法,并添加了字段 seatHeight
和一个用于设置它的方法(山地自行车的座椅可以上下移动,以适应地形要求)。
您已经看到以以下方式定义的类
class MyClass {
// field, constructor, and
// method declarations
}
这是一个类声明。类体(大括号之间的区域)包含所有为从类创建的对象提供生命周期的代码:用于初始化新对象的构造函数、用于提供类及其对象状态的字段声明,以及用于实现类及其对象行为的方法。
前面的类声明是最小的。它只包含类声明中必需的那些组件。您可以在类声明的开头提供有关类的更多信息,例如其超类的名称、它是否实现任何接口等等。例如,
class MyClass extends MySuperClass implements YourInterface {
// field, constructor, and
// method declarations
}
表示 MyClass
是 MySuperClass
的子类,并且它实现了 YourInterface
接口。
您还可以在最开始添加修饰符,如 public
或 private
— 因此您可以看到类声明的开头行可能会变得相当复杂。修饰符 public
和 private
决定了哪些其他类可以访问 MyClass
,将在本节后面讨论。有关接口和继承的部分将解释如何在类声明中使用 extends
和 implements
关键字以及原因。目前,您不必担心这些额外的复杂情况。
一般来说,类声明可以按顺序包含以下组件
- 修饰符,如
public
、private
和您将在后面遇到的其他一些修饰符。(但是,请注意,private
修饰符只能应用于嵌套类。) - 类名,按照惯例,首字母大写。
- 类的父类(超类)的名称(如果有),前面是关键字
extends
。一个类只能扩展(子类)一个父类。 - 类实现的接口的逗号分隔列表(如果有),前面是关键字
implements
。一个类可以实现多个接口。 - 类体,用大括号
{}
括起来。
声明成员变量
有几种类型的变量
- 类中的成员变量——这些称为字段。
- 方法或代码块中的变量——这些称为局部变量。
- 方法声明中的变量——这些称为参数。
Bicycle
类使用以下代码行来定义其字段
public int cadence;
public int gear;
public int speed;
字段声明按顺序由三个组件组成
- 零个或多个修饰符,如
public
或private
。 - 字段的类型。
- 字段的名称。
Bicycle
的字段名为 cadence
、gear
和 speed
,它们都是整数类型(int
)。public
关键字将这些字段标识为公共成员,任何可以访问该类的对象都可以访问它们。
控制谁有权访问成员
使用的第一个(最左边的)修饰符允许您控制哪些其他类可以访问成员字段。目前,只考虑 public
和 private
。其他访问修饰符将在后面讨论。
public
修饰符——该字段可从所有类访问。private
修饰符——该字段只能在其自身类中访问。
本着封装的精神,通常将字段设为私有。这意味着它们只能从 Bicycle
类中直接访问。但是,我们仍然需要访问这些值。这可以通过添加公共方法来间接完成,这些方法为我们获取字段值
public class Bicycle {
private int cadence;
private int gear;
private int speed;
public Bicycle(int startCadence, int startSpeed, int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
public int getCadence() {
return cadence;
}
public void setCadence(int newValue) {
cadence = newValue;
}
public int getGear() {
return gear;
}
public void setGear(int newValue) {
gear = newValue;
}
public int getSpeed() {
return speed;
}
public void applyBrake(int decrement) {
speed -= decrement;
}
public void speedUp(int increment) {
speed += increment;
}
}
设置变量的类型
所有变量都必须有类型。您可以使用基本类型,如 int
、float
、boolean
等。或者,您可以使用引用类型,如字符串、数组或对象。
命名变量
所有变量,无论是字段、局部变量还是参数,都遵循与语言基础部分中介绍的相同的命名规则和约定,变量命名。
在本节中,请注意,方法和类名使用相同的命名规则和约定,只是
- 类名的第一个字母应大写,并且
- 方法名中的第一个(或唯一)单词应为动词。
上次更新: 2024 年 1 月 5 日