假设我有一个 ClassA
和 ClassB
扩展 ClassA
ClassA {
private int x;
private void m1()
{
}
}
ClassB extends ClassA {
}
在数据封装下,我们应该将数据字段和方法私有(private)化。这是正确的吗?
但是,在这种情况下,ClassB
无法使用 ClassA
的数据字段和方法。
那么,在数据封装下我应该只使用私有(private)访问修饰符吗?
我可以使用protected访问修饰符而不是private来解决数据封装规则下的问题吗?
最佳答案
本质上,封装是一种确保类中的某些函数仅由经过测试且已知可以工作的进程运行的方法。如果一个函数没有理由被除您想要的对象之外的任何对象调用,那么为什么要赋予它被看到和意外调用的能力?
它实际上更像是一种程序员控制形式,设置正确代码使用的规则和基本准则,特别是在您只想公开某些函数或类的 API 场景中。
“良好实践”指出,对于不与类本身以外的任何对象交互的函数,您应该使用“私有(private)”。对于需要与子类交互的函数,可以使用 protected。对于其他类之间的所有其他接口(interface),请使用 public。
关于java - "Data Encapsulation"是什么意思?使用私有(private)数据字段或方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208802/