现实世界中,你经常会发现很多独立的对象是同一种类型。有上千上万的其他的自行车存在的,这些全是相同的制作和模型。每一个自行车都只由一套蓝图制作出,因此必定包含着相同的部分。在面向对象的术语中,我们说某个自行车是一个被称为自行车的对象的类的一个实例。类是创造对象的蓝图。
下面的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, and gear 代表了对象的状态,方法(
changeCadence
, changeGear
, speedUp
)代表了他与外界的交互。
你可能会注意到Bicycle类没有包含一个main方法,那是因为他不是一个完整的应用,它仅仅可能是在一个应用中使用的自行车对象的蓝图。创建和使用Bicycle对象由应用中其他的类负责。
下面是一个BicycleDemo类,它创建了俩个Bicycle对象并调用了他们的方法。
class BicycleDemo { public static void main(String[] args) { // Create two different // Bicycle objects Bicycle bike1 = new Bicycle(); Bicycle bike2 = new Bicycle(); // Invoke methods on // those objects 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:50 speed:10 gear:2 cadence:40 speed:20 gear:3