为什么子类不覆盖其超类变量的值?

杰克

我有以下三个类,b和c类扩展了a类。我想知道为什么代码没有读取b和c变量的值。

public class a{
  protected int myvalue = 1;

}

public class b extends a{
  private int myvalue = 2;
}

public class c extends a{
  private int myvalue = 3;
}

我主要方法的主体

   ArrayList<a> myList= new ArrayList();
   myList.add(new b());
   myList.add(new c());

   for(int i =0;i<myList.size();i++)
        System.err.println("value is:" + myList.get(i).myvalue);

输出

 1
 1

从Oracle网站:

在类中,与超类中的字段具有相同名称的字段将隐藏超类的字段,即使它们的类型不同。在子类中,不能用其简单名称引用超类中的字段。相反,必须通过super访问该字段,这将在下一部分中介绍。一般来说,我们不建议隐藏字段,因为这会使代码难以阅读。

艾略特·新鲜

您正在遮掩自己的领域,myvalue而不是超越它,我相信像这样的事情会做您想要的

public class a{
  protected int myvalue = 1;
}

public class b extends a{
  public b() {
    myvalue = 2;
  }
}

public class c extends a{
  public c() {
    myvalue = 3;
  }
}

另外,请不要使用原始类型

// ArrayList<a> mylist = new ArrayList();
ArrayList<a> mylist = new ArrayList<>(); // <a> on Java 5 and 6

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C#中,为什么子类字段的默认值不覆盖超类字段的默认值?

来自分类Dev

在C#中,为什么子类字段的默认值不覆盖超类字段的默认值?

来自分类Dev

为什么子类不覆盖python中基类的字段以及如何处理

来自分类Dev

为什么子类不覆盖python中基类的字段以及如何处理

来自分类Dev

我在子类中覆盖了一个属性的setter,但是当我在超类的init方法中调用它时,为什么子类的方法响应?

来自分类Dev

为什么子类化ActiveSupport :: TimeZone会中断其类级[]运算符?

来自分类Dev

为什么子类化ActiveSupport :: TimeZone会破坏其类级别的[]运算符?

来自分类Dev

为什么子类已经覆盖了父类的静态方法呢?

来自分类Dev

在此示例中,为什么子类不继承python中父类的方法?

来自分类Dev

为什么我们不能使用超类的引用变量来访问其子类的方法(超类中没有的方法)?

来自分类Dev

为什么子类会包含Puppet模块的主类?

来自分类Dev

为什么子类看不到父类的方法?

来自分类Dev

为什么我不继承超类变量?

来自分类Dev

为什么子类的子类不能访问其祖先的受保护成员?

来自分类Dev

为什么Java不允许不能访问其超类的任何构造函数的子类?

来自分类Dev

如何使用超类的实例访问子类的覆盖变量

来自分类Dev

如何使用超类的实例访问子类的覆盖变量

来自分类Dev

为什么我的类变量在方法之间改变其值?

来自分类Dev

为什么子类成员不受保护?

来自分类Dev

为什么动态方法分派和超类变量可以引用子类对象?

来自分类Dev

为什么具有超类值的Map不能接受子类对象?

来自分类Dev

为什么子类重写虚拟函数不能更改父类的默认函数参数?

来自分类Dev

使用JQM,为什么子div不覆盖父母的宽度和高度

来自分类Dev

关于为什么我不能通过其子类型覆盖使用通用类参数的方法的说明

来自分类Dev

为什么不覆盖类字段

来自分类Dev

从子类更改超类实例变量的值

来自分类Dev

子类尝试为超类中的变量赋予新值

来自分类Dev

为什么子报表不拆分?

来自分类Dev

为什么我只使用子类创建超类的属性

Related 相关文章

  1. 1

    在C#中,为什么子类字段的默认值不覆盖超类字段的默认值?

  2. 2

    在C#中,为什么子类字段的默认值不覆盖超类字段的默认值?

  3. 3

    为什么子类不覆盖python中基类的字段以及如何处理

  4. 4

    为什么子类不覆盖python中基类的字段以及如何处理

  5. 5

    我在子类中覆盖了一个属性的setter,但是当我在超类的init方法中调用它时,为什么子类的方法响应?

  6. 6

    为什么子类化ActiveSupport :: TimeZone会中断其类级[]运算符?

  7. 7

    为什么子类化ActiveSupport :: TimeZone会破坏其类级别的[]运算符?

  8. 8

    为什么子类已经覆盖了父类的静态方法呢?

  9. 9

    在此示例中,为什么子类不继承python中父类的方法?

  10. 10

    为什么我们不能使用超类的引用变量来访问其子类的方法(超类中没有的方法)?

  11. 11

    为什么子类会包含Puppet模块的主类?

  12. 12

    为什么子类看不到父类的方法?

  13. 13

    为什么我不继承超类变量?

  14. 14

    为什么子类的子类不能访问其祖先的受保护成员?

  15. 15

    为什么Java不允许不能访问其超类的任何构造函数的子类?

  16. 16

    如何使用超类的实例访问子类的覆盖变量

  17. 17

    如何使用超类的实例访问子类的覆盖变量

  18. 18

    为什么我的类变量在方法之间改变其值?

  19. 19

    为什么子类成员不受保护?

  20. 20

    为什么动态方法分派和超类变量可以引用子类对象?

  21. 21

    为什么具有超类值的Map不能接受子类对象?

  22. 22

    为什么子类重写虚拟函数不能更改父类的默认函数参数?

  23. 23

    使用JQM,为什么子div不覆盖父母的宽度和高度

  24. 24

    关于为什么我不能通过其子类型覆盖使用通用类参数的方法的说明

  25. 25

    为什么不覆盖类字段

  26. 26

    从子类更改超类实例变量的值

  27. 27

    子类尝试为超类中的变量赋予新值

  28. 28

    为什么子报表不拆分?

  29. 29

    为什么我只使用子类创建超类的属性

热门标签

归档