Java继承了使用错误类的方法

Zhe*_*hen 0 java inheritance

所以我有一个父类,这里称为A,而B类则扩展为A.

public class A
{
  private int a = 1;
  public int getA()
  {
    return a;
  }
}

public class B extends A
{
  private int a = 2;
}
Run Code Online (Sandbox Code Playgroud)

但是,当调用B.getA()时,它会从A类返回1而不是B类中的2.我做错了吗?因为几个月前我遇到了类似的问题,并且在经历了很多混乱后奇迹般地工作了.唯一的区别是该方法处理将对象添加到ArrayList.

谢谢.

Ste*_*ker 6

私有变量甚至是子类的私有变量.Aa和Ba是两个完全不同的领域.如果要更改子类中的数据,请将其设置为受保护的字段,或者(更好的是)将可选的抽象getter添加到父类并在子类中覆盖它.