Java 中主要的物件導向建構是_類別_,也就是資料(欄位,又稱為實例變數)和行為(方法)的組合。類別的欄位和方法合稱為它的_成員_。
成員的存取權可以透過存取修飾子來控制,最常見的兩種是:
在 Java 中,如果沒有指定存取修飾子,預設就是_套件可見性_。在這種情況下,成員對定義在同一個套件中的所有類別都可見。
上述把相關的資料和行為聚集在一起,並限制成員的存取權,這樣的做法稱為封裝,是物件導向的核心概念之一。
你可以把類別想成是建立該類別實例的範本。要建立類別的實例(也稱為_物件_),會使用new關鍵字:
class Car {
}
// Create two car instances
Car myCar = new Car();
Car yourCar = new Car();
欄位有型別和名稱(以 camelCase 命名),可以定義在類別中的任何位置(以 PascalCase 命名)。
class Car {
// Accessible by anyone
public int weight;
// Only accessible by code in this class
private String color;
}
你可以選擇性地為欄位指定初始值。如果欄位_沒有_指定初始值,它會被設為該型別的預設值。實例的欄位值可以使用點記法來存取和更新。
class Car {
// Will be set to specified value
public int weight = 2500;
// Will be set to default value (0)
public int year;
}
Car newCar = new Car();
newCar.weight; // => 2500
newCar.year; // => 0
// Update value of the field
newCar.year = 2018;
私有欄位通常是透過呼叫方法所產生的副作用來更新。這類方法通常不會回傳任何值,此時回傳型別應該是 void:
class CarImporter {
private int carsImported;
public void importCars(int numberOfCars)
{
// Update private field
carsImported = carsImported + numberOfCars;
}
}
請注意,在 Java 類別中使用公開欄位並不是慣例。通常會改用私有欄位,並透過取值方法_與_設值方法來存取。
在類別中,this關鍵字會指向目前的類別。如果參數和欄位同名,這尤其有用:
class CarImporter {
private int carsImported;
public void setImportedCars(int carsImported)
{
// Update private field from public method
this.carsImported = carsImported;
}
}