什麼是類?
類是對象的藍圖或者原型。這一部分會詳細說明類是怎樣模擬現實世界中對象的狀態和行為的。它是基礎,它會告訴你就是一個簡單的類也能很好地模擬對象的狀態和行為。
在現實世界中,你會發現很多獨特的對象具有相同的種類。比如成千上萬輛自行車,制作方法和模型都是相同的。每一個輛自行車都是從相同的設備和圖紙中制造出來的,所以具有相同的組件。在面向對象的術語中,我們就說這輛自行車是自行車這個對象的中的一個實例。類就是對象的藍圖。
下面給出自行車這個類的用法:
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,seepUp等等定義了與外界的交互。
你可能注意到自行車類不包含main方法。這是因為上面的不是一個完整的應用程序,它僅僅是可能會在自行車對象中被使用的藍圖。它的功能是創建一個自行車的新對象,這個對象可以在其他的程序中使用。
下面這個BicycleDemo類就是創建兩個單獨的自行車對象,還要調用它們的方法:
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