Java 中的 Getter 和 Setter
Getter 和 Setter 是 Java 中兩種特殊的 方法,允許訪問和修改資料成員的值。它們主要用於封裝和資料隱藏,以保護我們的敏感資料免遭未經授權的訪問。在封裝中,我們將相關的資料和行為組合到一個類中,並隱藏實現細節以防止外部世界訪問。資料隱藏是指防止從物件的內部狀態直接訪問類的成員。在本文中,我們將解釋 Java 中的 Getter 和 Setter 方法是什麼,以及它們如何在資料隱藏中發揮作用。
Getter 和 Setter 方法
需求
當我們將類成員宣告為私有(private)時,它將無法被其類外部的任何程式碼訪問,包括其子類。此功能使其比其他訪問修飾符(如 public 和 protected)更安全。透過使用 Getter 和 Setter 方法,我們可以控制如何訪問和修改類的私有欄位。我們還可以新增驗證邏輯或其他功能到 Getter 和 Setter 方法中,例如檢查輸入是否有效,我們可以為指定的資料成員驗證正確的 資料型別,等等。
Setter 方法
這些是用於更新私有欄位值的公共(public)方法。它們通常以“set”為字首,後跟欄位名稱,且首字母大寫。它必須具有 void 返回型別,並接受一個與它修改的欄位型別相同的引數。
示例
public void setItemName( String name ) {
this.itemName = name;
}
Getter 方法
這些是用於讀取私有欄位值的公共(public)方法。它們通常以“get”為字首,後跟欄位名稱,且首字母大寫。它必須與它訪問的欄位具有相同的返回型別。
示例
public String getItemName() {
return name;
}
Getter 和 Setter 的 Java 程式
示例 1
以下示例說明了 Getter 和 Setter 方法的使用
方法
定義類的三個私有成員。
建立兩個 void 型別的 Setter 方法。第一個 Setter 方法用於“itemName”,第二個用於“quantity”。
現在,建立相應的 Getter 方法。第一個 Getter 方法的返回型別為 String,第二個為整數。
在 main() 方法中,建立一個“Cart”類的物件,並呼叫 Setter 方法以及一個引數來設定商品名稱。最後,呼叫相應的 Getter 方法。
public class Cart {
// private members
private String itemName;
private int price;
private int quantity;
// first setter method
public void setItemName( String itemName ) {
this.itemName = itemName;
}
// first getter method
public String getItemName() {
return itemName;
}
// second setter method
public void setPrice( int price ) {
this.price = price;
}
// second getter method
public int getPrice() {
return price;
}
public static void main(String[] args) {
Cart obj = new Cart(); // creating object
obj.setItemName("Butter"); // setting item name
obj.setPrice(50); // setting item quantity
System.out.println("The details we have set are: ");
System.out.println(obj.getItemName());
System.out.println(obj.getPrice());
}
}
輸出
The details we have set are: Butter 50
示例 2
這是 Getter 和 Setter 方法的另一個示例,稍作修改。我們將在 Setter 方法中提供我們的邏輯,以便如果商品數量為負數,編譯器將丟擲錯誤。
public class Cart {
// private members
private String itemName;
private int price;
private int quantity;
// first setter method
public void setItemName( String itemName ) {
this.itemName = itemName;
}
// first getter method
public String getItemName() {
return itemName;
}
// second setter method
public void setQuantity( int quantity ) {
if(quantity <= 0) {
System.out.println("Invalid input!");
} else {
this.quantity = quantity;
}
}
// second getter method
public int getQuantity() {
return quantity;
}
public static void main(String[] args) {
Cart obj = new Cart(); // creating object
obj.setItemName("Butter"); // setting item name
// setting item quantity
obj.setQuantity(-2); // wrong input
obj.setQuantity(5);
System.out.println("The details we have set are: ");
System.out.println(obj.getItemName());
System.out.println(obj.getQuantity());
}
}
輸出
Invalid input! The details we have set are: Butter 5
結論
我們從介紹 Getter 和 Setter 方法開始本文,在下一節中,我們詳細解釋了它們以及它們的需求。最後,我們透過 Java 程式討論了它們的實際實現。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP