当前位置: 首页 > 面试题库 >

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

帅锦
2023-03-14
问题内容

在Java中,

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

谢谢


问题答案:

我不倾向于从一个 对象 可以访问另一个 对象的 角度来考虑它,而是从什么 代码 可以访问对象中的哪些数据来考虑。

在Java(和C#,btw)中,类中的代码可以访问同一类的任何对象的私有成员。然后,您将获得包装/装配体访问权限和公共访问权限。

棘手的是受保护的访问,这是 对子类中的 代码 访问-
但它取决于目标对象:仅当对象的实例类型与对象的位置相同时,才允许您访问该对象的受保护成员。代码或某些子类-即使它是由父类 公开 的。例如,假设您有:

class Parent
{
    protected int x;
}

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

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



 类似资料:
  • 问题内容: 我最近拾起Java并遇到了问题。我有几个具有不同类的文件,但是我无法弄清楚如何访问文件中声明了其他类之外的其他类的对象。例如: 我不确定如何从其他文件和类本身有效访问其他类的这些对象?我知道我可以使对象静态化,然后通过它们所在的类将它们作为变量进行访问,但这似乎有点违反直觉?我来自面向对象较少的编程背景,因此我仍在尝试了解Java的编程风格。 问题答案: 您可能只想要这样的东西: 希望

  • 本文向大家介绍PHP封装的Twitter访问类实例,包括了PHP封装的Twitter访问类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP封装的Twitter访问类。分享给大家供大家参考。具体如下: 希望本文所述对大家的php程序设计有所帮助。

  • 由于某种原因,我有一个LinkedList类无法访问我的学生类方法。我不明白为什么会发生这种情况,因为我的linkedlist类是Student类型。我一直收到一个错误:找不到symbol symbol:method getName()位置:Student类型的变量数据,其中Student是一个类型变量:Student extends对象在类节点中声明。下面的方法来自我的链表类 getGpa是我的

  • 我想让具有多个内部类的抽象类对其进行扩展,并可以通过静态方法创建其内部类的实例,但我得到编译器错误“无法访问ITask类型的封闭实例。必须使用ITask类型的封闭实例限定分配(例如,x.new A(),其中x是ITask的实例)。” 我发现内部类应该由外部类的实例创建,但是我的外部类有抽象方法,我不能创建它的实例。我创建了扩展父类的内部类,因为我习惯于控制它们的创建。那么有没有办法让我的模式发挥作

  • 问题内容: 我大概有以下内容。基本上,我需要从在其定义中用于实例方法的装饰器访问实例方法的类。 原样的代码给出: AttributeError:“函数”对象没有属性“ im_class” 我发现了类似的问题/答案-Python装饰器使函数忘记了它属于Python装饰器中的类和Get类-但它们依赖于一种解决方法,该解决方法在运行时通过抢夺第一个参数来获取实例。就我而言,我将基于从其类收集的信息来调用

  • 我有一个叫做GreenhouseControls的类,它有很多 内置于其中的类,例如: 我从文本文件中提取值以获取事件名称(如“ThermostatNight”)和时间值(如“2000”)。为了用这些值实例化一个新对象,我构建了一个EventFactory,它接受这些值作为参数。 这是我构建的类,用于从文本文件值创建新的事件对象: 当我运行这个程序时,一切都运行得很好,直到我将EventFacto