如何从Java中的超类方法获取子类值?

Bob*_*obs 1 java inheritance class

我有这两个类:

Class A 
{
  public int max = 100;

  public int getMax()
  {
     return max;
  }
}



Class B extends A
{
  public int max = 200;
}
Run Code Online (Sandbox Code Playgroud)

我写下面的代码:

A clsA = new A();
B clsB = new B();


valA = clsA.getMax();
valB = clsB.getMax();
Run Code Online (Sandbox Code Playgroud)

valA是100 valB再次是100

如何编写clsB.getMax();返回200的代码?

Era*_*ran 6

您可以在B类中覆盖getMax:

  @Override
  public int getMax()
  {
     return max;
  }
Run Code Online (Sandbox Code Playgroud)

虽然,一般来说,在超类和子类中使用具有相同名称的变量是个坏主意.

请注意,更改后,以下内容也将返回200:

A clsB = new B();
valB = clsB.getMax();
Run Code Online (Sandbox Code Playgroud)