【发布时间】:2015-05-16 13:04:57
【问题描述】:
我浏览了几个博客,从中得到了以下几点。 Encapsulation Blog
- 不要将字段公开,因为任何其他类都可以直接修改变量。
- 使用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";
}
}
-
Organization正在创建一个员工实例(将它自己的一组值分配给员工) - 同样
Organization2也在创建一个员工实例(将它自己的一组值分配给员工)
问题: 因为这是两个不同的实例。这里如何违反封装?
【问题讨论】:
-
如果您想要更多阅读材料,以下是 Mark Seemann 对封装含义的有趣看法:blog.ploeh.dk/2012/11/27/Encapsulationofproperties
标签: java oop encapsulation