在真实世界中,你经常会发现许多单独的对象都属于相同的种类。可能存在有上千种自行车,它们全部都有相同的构成与模型。每种自行车都构造于相同的蓝图集并且因此而包含了相同的组成部分。在向对象的术语中,我们就可以说你的自行车是自行车对象类的一个实例。也就是说,类就是那些被创建对象的蓝图。
下列 Bicycle 类就是一种可能的自行车实现:
class Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
void printStates() {
System.out.println("cadence:"+cadence+" speed:"+speed+" gear:"+gear);
}
}
Java 编程语言的语法对于你来说可能是全新的,但是这个类的设计是基于前面所讨论的自行车对象。字段 cadence,speed 和 gear 呈现了对象的状态,而方法(changeCadence、changeGear,speedUp 等等。)则定义了它与外部世界的交互。
你可能已经注意到 Bicycle 类并没有包含 main 方法。这是因为它不是一个完整的应用程序;它只是可能在某个应用程序中被使用的自行车蓝图。创建并且使用新的 Bicycle 对象的职责则属于你的应用程序中的一些其他的类。
下面的 BicycleDemo 类创建了两个单独的 Bicycle 对象并且调用它们的方法:
class BicycleDemo {
public static void main(String[] args) {
// 创建两个不同的 Bicycle 对象
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
// 调用这些对象的方法
bike1.changeCadence(50);
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();
bike2.changeCadence(50);
bike2.speedUp(10);
bike2.changeGear(2);
bike2.changeCadence(40);
bike2.speedUp(10);
bike2.changeGear(3);
bike2.printStates();
}
}
这个测试打印输出了这两部自行车最终的踏板特性:cadence,speed 与 gear。
cadence:50 speed:10 gear:2
cadence:40 speed:20 gear:3