21xrx.com
2025-03-23 17:17:23 Sunday
文章检索 我的文章 写文章
我最近在学习Java的封装
2023-06-18 10:44:31 深夜i     7     0
Java封装 私有属性 公共方法

我最近在学习Java的封装,这是一项重要的语言特性,可以帮助保护代码的安全性和可维护性。在这篇文章中,我将分享三个简单例子,帮助初学者理解Java封装的概念和实践。

示例1:私有属性和公共方法

在Java中,将属性声明为私有的是一种很好的实践,因为这样可以防止其他类直接修改这些属性。我们可以提供公共方法,以便其他类可以安全地访问和修改这些属性。

public class Person {
  private String name;
  private int age;
  
  public Person(String name, int age)
    this.name = name;
    this.age = age;
  
  
  public String getName()
    return name;
  
  
  public void setName(String name)
    this.name = name;
  
  
  public int getAge()
    return age;
  
  
  public void setAge(int age)
    this.age = age;
  
  
  public void show() {
    System.out.println("Name: " + name + ", Age: " + age);
  }
}

在这个例子中,`Person`类有两个私有属性:`name`和`age`。我们提供了四个公共方法:两个用于获取属性值,两个用于设置属性值。还有一个`show()`方法,用于打印出对象的信息。

示例2:封装的构造函数

在Java中,我们可以利用构造函数来将类的属性设置为默认值。我们可以用封装的方式来确保这些属性的类型和值符合我们的需求。这个示例中,我们将确保对象的年龄在0到150之间。

public class Person {
  private String name;
  private int age;
  
  public Person(String name, int age) {
    setName(name);
    setAge(age);
  }
  
  public String getName()
    return name;
  
  
  public void setName(String name)
    this.name = name;
  
  
  public int getAge()
    return age;
  
  
  public void setAge(int age) {
    if (age >= 0 && age <= 150)
      this.age = age;
     else {
      System.out.println("Invalid age, please try again");
    }
  }
  
  public void show() {
    System.out.println("Name: " + name + ", Age: " + age);
  }
}

在这个例子中,我们添加了一个`setAge()`方法来确保传入的年龄值在指定范围内。如果传入的年龄不合法,我们就输出一个错误信息,保护这个对象的安全性。

示例3:私有方法和封装

Java中的封装不仅仅是保护属性和公共方法,还可以保护私有方法。在这个例子中,我们将一个方法`displayAge()`声明为私有的,以确保不能从其他类中访问它。

public class Person {
  private String name;
  private int age;
  
  public Person(String name, int age) {
    setName(name);
    setAge(age);
  }
  
  public String getName()
    return name;
  
  
  public void setName(String name)
    this.name = name;
  
  
  public int getAge()
    return age;
  
  
  public void setAge(int age) {
    if (age >= 0 && age <= 150)
      this.age = age;
     else {
      System.out.println("Invalid age, please try again");
    }
  }
  
  public void show() {
    System.out.println("Name: " + name + ", Age: " + getAgeInYears());
  }
  
  private int getAgeInYears()
    return age / 365;
  
}

在这个例子中,我们添加了一个私有方法`getAgeInYears()`,来计算人物的年龄。因为这个方法是私有的,我们只能够在`Person`类中调用它。我们提供了另一个公共方法`show()`,在里面通过调用私有方法`getAgeInYears()`来打印出人物的年龄。

简单的Java封装示例能够帮助我们理解这项特性,并将安全和可维护性融入我们的代码中。通过这些示例,我们可以了解属性和方法的封装,以及如何保护并控制它们的访问。

  
  

评论区