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.