当前位置: 首页 > 知识库问答 >
问题:

超类与子类之间的数据所有权

葛越泽
2023-03-14

当子类继承超类时,子类与超类中定义的具有不同可访问性的字段之间是什么关系,哪个字段属于子类,哪个字段不属于子类。谁能解释一下下面的例子:

class Parent
{
  private int partOne = 0;
  public int partTwo = 1;

  public void tellMe()
  {
     System.out.println(partOne);
     System.out.println(partTwo);
  }
}
class Child extends Parent
{
  private int partOne = 2;
  public int partTwo = 3;

  public void main(String[] args)
  {
   Child child = new Child();
   child.tellMe();
  }
}

当我在Eclipse中调试它时,我观察了堆栈中的变量Child,我发现子实例有四个字段,两个由它的类定义,两个由它的父类定义,我非常困惑.当我创建子实例IMP时是否创建了父实例,我认为它只进入父类的构造函数,但我不能解释为什么子类不重写这两个字段,或者至少,我认为它应该用public可访问性重写partTwo.请告诉我是什么原因,谢谢.

共有1个答案

许琛
2023-03-14

为什么child类不重写这两个字段,或者至少,我认为它应该重写具有公共可访问性的partTwo

在Java中,数据成员不是多态的。这意味着在您的示例中,类中定义的两个字段与类中的两个字段完全无关,即使它们碰巧共享它们的名称。

尽管这是语言允许的,但做这种性质的事情只是一个混乱的配方(正如您所发现的)。

 类似资料:
  • 7.3 超类与子类* 当我们用类去描述现实世界的对象时,有时会发现某些类之间是“一般与特殊”的关系。 例如,“人”与“学生”之间就是一般与特殊的关系,而“学生”与“研究生”也是一般与特 殊的关系。当然,“人”的特殊例子还包括“教师”,“学生”的特殊例子还包括“旁听生”。 总之,通过一般与特殊的关系,可以将所有类组织成为一个层次结构,称为类层次。如图 7.11 所示。 [图片丢失] 图 7.11 类

  • 我正在开发一个程序,允许用户在四支球队之间选择主客场足球队。我创建了一个通用的超类团队,它定义了每个安全/场球/达阵得分分配的点数。生成一个随机数,然后根据该数字,程序执行条件if/else语句,以确定动作和点。 这是在超类中: 注意:上面的初始化为 在整个过程中,我希望跟踪。我在我的超类中有这样的设置,然而,当程序运行时,它将整个游戏的分数相加,而不区分队伍。 客场团队行动。射门得分+3当前得分

  • 问题内容: 我有两个类,和,扩展了前一个类。 具有以下构造函数: 我将注意到所有实例变量都已设置为private。 同时,具有以下构造函数: 但是,这为我的构造函数引发了“找不到符号”错误。 我尝试使用,但是我的超类的私有范围阻止了这种情况。 我发现向我的构造函数中添加字段并允许我调用超级构造函数,但是我想知道是否存在一种无需在子类构造函数中传递其所有参数的情况下调用超级构造函数的方法? 问题答案

  • 本文向大家介绍C ++中基本数据类型与派生数据类型之间的区别,包括了C ++中基本数据类型与派生数据类型之间的区别的使用技巧和注意事项,需要的朋友参考一下 在编程中,数据类型表示打算由用户使用的数据的类型和性质。它是编译器或解释器要处理的数据类型,并在主存储器中提供相应的存储位置。 现在根据数据的性质,数据类型主要有两种类型,一种是基本数据类型,另一种是派生数据类型。这两种数据类型都在编程中使用,

  • 嗨,伙计们,我有个小问题。我有这个: 现在我有了另一个类,它生成一个迭代器,并将它的所有对象强制转换为动物对象。

  • 因此,从句子AA我得出结论,只有public和protected超类的方法可以被重写 ,sentenceBB也是如此 所以我搞混了两个句子之间的区别是什么?