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 程式討論了它們的實際實現。

更新於: 2023年7月20日

1K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.