什么是封装以及如何使用它
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 它提供了一种访问和修改私有字段的控制方法。
-
验证:
年龄设置器如何演示?为了保护数据免受无效输入的影响,强制执行规则(例如,年龄必须为正)。
以上是什么是包装,以及如何使用它的详细内容,请关注图灵教育的其他相关文章!