当前位置: 首页 > 图灵资讯 > 技术篇> 什么是封装以及如何使用它

什么是封装以及如何使用它

来源:图灵教育
时间:2024-09-09 09:53:05

什么是封装以及如何使用它

什么是封装? java 包装是隐藏一些东西如何工作的细节,同时仍然允许其他人使用它。将数据(如变量)和方法(如函数)分组成一个单元,称为类。您不会让每个人都直接访问您的数据,而是提供方法(getter 和 setter)控制数据访问或更改方法。这样,除非你愿意,否则你可以保护你的数据,保持代码整洁有序,不会让任何人扰乱内部操作。

使用方法 要在 java 在使用包装时,您需要创建一个具有私有字段的类别,并提供公共方法(如 getter 和 setter)访问和修改这些字段。这确保了数据只能通过控制进行更改。例如,如果你想创建一个 person 类别,名称和年龄是私有的,你可以用 getter 检索值并使用 setter 更新它们。操作方法如下:

public class person {
    // private fields
    private string name;
    private int age;

    // constructor
    public person(string name, int age) {
        this.name = name;
        this.age = age;
    }

    // getter for name
    public string getname() {
        return name;
    }

    // setter for name
    public void setname(string name) {
        this.name = name;
    }

    // getter for age
    public int getage() {
        return age;
    }

    // setter for age
    public void setage(int age) {
        if(age > 0) { // simple validation
            this.age = age;
        } else {
            system.out.println("age must be positive.");
        }
    }
}

// using the person class
public class main {
    public static void main(string[] args) {
        person person = new person("john", 25);

        // accessing fields using getters
        system.out.println(person.getname()); // output: john
        system.out.println(person.getage());  // output: 25

        // modifying fields using setters
        person.setname("jane");
        person.setage(30);

        system.out.println(person.getname()); // output: jane
        system.out.println(person.getage());  // output: 30
    }
}

让我们分解一下 让我们分解代码并逐步解释每个部分:

1. 带有私有字段的类定义

public class person {
    // private fields
    private string name;
    private int age;
}

解释:

这是 person 类,我们定义了两个私有字段:name(字符串)和age(int)。通过将这些字段设置为私有字段,我们确保没有其他类别可以直接访问或修改它们。这是包装的核心思想——隐藏物体的内部状态。

2.构造函数

    // constructor
    public person(string name, int age) {
        this.name = name;
        this.age = age;
    }

解释:

创建构造函数 person 对象初始化。它需要两个参数:姓名和年龄,并将这些值分配给私人字段。这确保了当创建新的时候 person 对象时,它从有效的数据开始。

3. getter 和 setter

    // getter for name
    public string getname() {
        return name;
    }

    // setter for name
    public void setname(string name) {
        this.name = name;
    }

解释:

创建构造函数 person 对象初始化。它需要两个参数:姓名和年龄,并将这些值分配给私人字段。这确保了当创建新的时候 person 当对象时,它从有效数据开始。

4.年龄的getter和setter(带验证)

    // getter for age
    public int getage() {
        return age;
    }

    // setter for age
    public void setage(int age) {
        if (age > 0) { // simple validation
            this.age = age;
        } else {
            system.out.println("age must be positive.");
        }
    }

解释:

getter getage() 工作方法及 name 的 getage() 同样的方法允许访问年龄字段。 setage() 该方法不仅允许修改年龄字段,还增加了验证检查。 if 确保年龄只有在年龄为正数时才设定。如果提供无效年龄(如负数),设置器将阻止更新并打印消息。这是包装如何控制可设置的数据类型的例子。

5. 使用 person 类

// Using the Person class
public class Main {
    public static void main(String[] args) {
        Person person = new Person("John", 25);

        // Accessing fields using getters
        System.out.println(person.getName()); // Output: John
        System.out.println(person.getAge());  // Output: 25

        // Modifying fields using setters
        person.setName("Jane");
        person.setAge(30);

        System.out.println(person.getName()); // Output: Jane
        System.out.println(person.getAge());  // Output: 30
    }
}

解释:

在本节中,我们用结构函数创建了一个 person 对象(person)。构造函数将初始名称设置为“john年龄设定为 25。

点击下载“修复打印机驱动工具”;

然后,我们用它 getter(getname() 和 getage()打印 name 和age 值。之后,我们使用它。 setter(setname() 和 setage()更新值。最后,再次使用 getter 打印更新后的值。

封装实践要点:

  • 数据保护:

    私有字段不能直接从外部访问或修改。

  • 受控访问:

    getter 和 setter 它提供了一种访问和修改私有字段的控制方法。

  • 验证:

    年龄设置器如何演示?为了保护数据免受无效输入的影响,强制执行规则(例如,年龄必须为正)。

以上是什么是包装,以及如何使用它的详细内容,请关注图灵教育的其他相关文章!

上一篇:

开发者日记# 谁写的?

下一篇:

返回列表