Java Getter和Setter的区别

Java Getter和Setter的区别

Getter和Setter是Java中的两种特殊方法,允许访问和修改数据成员的值。它们主要用于封装和数据隐藏,以保护我们的敏感数据免受未经授权的访问。封装中,我们将相关的数据和行为组合在一个类中,并隐藏对外部世界的实现细节。数据隐藏意味着防止直接从对象的内部状态访问类的成员。在本文中,我们将解释Java中的getter和setter方法是什么以及它们在数据隐藏中的作用。

Getter和Setter方法

需要

当我们将一个类成员声明为私有时,它对外部代码,包括其子类,都不可访问。这个特性使得它比其他访问修饰符如public和protected更安全。通过使用getter和setter方法,我们可以控制如何访问和修改类的私有字段。我们还可以在getter和setter方法中添加验证逻辑或其他功能,比如检查输入是否有效,验证指定数据成员的正确数据类型等。

Setter方法

这些是用于更新私有字段值的公共方法。它们通常以字段名称的首字母大写的形式加上前缀”set”命名。它必须具有void返回类型,并接受与修改的字段类型相同的一个参数。

实例

public void setItemName( String name ) {
   this.itemName = name;
}

获取方法

这些是用于读取私有字段值的公共方法。它们通常以字段名的首字母大写的形式加上前缀’get’。它必须与所访问字段具有相同的返回类型。

实例

public String getItemName() {
   return name; 
}

Java程序的Getter和Setter

示例1

下面的示例演示了getter和setter方法的使用

方法

  • 定义一个类的三个私有成员。

  • 创建两个void类型的setter方法。第一个setter方法用于’itemName’,第二个用于’quantity’。

  • 创建相应的getter方法。第一个getter方法的返回类型为String,第二个为integer。

  • 在main()方法中,创建一个’Cart’类的对象,并调用设置方法,同时传入参数设置项目名称。最后,调用相应的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程序讨论了它们的实际实现。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程