java - 对象是否封装了数据,以至于同一类的其他实例也无法访问数据?

标签 java encapsulation conceptual

在 Java 中,

对象是否封装了数据,以至于同一类的其他实例也无法访问数据?仅当使用关键字“private”时? Java 中的“访问器方法”是什么 - 像 getName() 这样的方法?

谢谢

最佳答案

我不倾向于认为它是一个对象可以访问另一个对象,而是什么代码可以访问一个对象中的什么数据。

在 Java(和 C#,顺便说一句)中,类中的代码可以访问同一类的任何对象的私有(private)成员。然后您将获得包/程序集访问权限和公共(public)访问权限。

棘手的是 protected 访问,它是某种对子类中代码的访问——但这取决于目标对象:只有当对象是一个与代码位置或某个子类相同类型的实例 - 即使它被父类公开。例如,假设您有:

class Parent
{
    protected int x;
}

class Child1 extends Parent
class Child2 extends Parent
class Grandchild extends Child1

然后在 Child1 代码中,您只能访问 Parent.x 已知(在编译时)是 Child1< 实例的对象孙子。例如,您不能使用 new Parent().xnew Child2().x

关于java - 对象是否封装了数据,以至于同一类的其他实例也无法访问数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792361/

相关文章:

java - 如何从jsp文件中调用java类

Linux EC2 实例和 Openfire 服务器中的 Java CPU 使用率超过 100%

java - 使用 spring boot 在后台运行进程

c++ - 通过引用传递是作为指针传递的特例吗?

java - 如何用Java识别MongoDB中的文档

java - 静态常量是否违反 "encapsulation"?

javascript - 在 JavaScript 中隐藏对象的字段

java - 如何在不返回集合本身的情况下返回集合的数据?

java - JVM 如何确保跨所有处理器架构的平台独立性?

database - 为什么向数据库字段添加索引会加快对该字段的搜索速度?