我浏览了一些博客,从中得到了以下几点。 Encapsulation Blog
- 不要将字段公开为公共(public)字段,因为任何其他类都可以直接修改变量。
- 使用 getter 和 setter 来修改变量。
- 通过在 getter 和 setter 中包含验证,我们可以控制变量不会被直接修改。
我在这里有点困惑。
考虑Employee
,其字段包含姓名和地址。 Organization
和 Organization2
类将为员工变量赋值并打印相同的值。
public class Employee {
public String name;
public String address;
public void printEmpDetails() {
System.out.println("Employee name :" + name + ", Employee address :"
+ address);
}
}
public class Organization {
public static void main(String[] args) {
System.out.println("Employee details of org");
Employee emp = new Employee(); //New Instance variable created
emp.name= "JOHN";
emp.address = "JOHN ADDRESS";
}
}
public class Organization2 {
public static void main(String[] args) {
System.out.println("Employee details of org2");
Employee emp = new Employee(); //New Instance variable created
emp.name= "JAMES";
emp.address = "JAMES ADDRESS";
}
}
组织
正在创建一个员工实例(它将自己的一组值分配给员工)- 同样,
Organization2
也在创建一个员工实例(它将自己的一组值分配给员工)
问题: 因为这是两个不同的实例。这里是如何违反封装性的?
最佳答案
Employee
类违反了封装性。变量 name
和 address
是公共(public)的。它们应该设为私有(private)
,并且应该为它们定义 getter 和 setter。
关于java - java中封装的清晰性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30276015/