我正在编写一些需要利用继承功能的 Android 代码。以下代码片段是让我感到困惑的部分:
超类:
public class Foo {
public int length = 1;
public int width = 2;
public int height = 3;
public Foo(int len, int wid, int hei)
{
length = len;
width = wid;
height = hei;
}
public int getVolume()
{
return length * width * height;
}
}
这是子类:
public class Bar extends Foo {
int extraVolume = 4;
public Bar(int len, int wid, int hei, int extra)
{
super(len, wid, hei);
length = len;
width = wid;
height = hei;
this.extraVolume = extra;
}
@Override
public int getVolume()
{
return (super.getVolume() + this.extraVolume);
}
}
如果我以这种方式使用它们:
Bar bar = new Bar(1, 1, 1, 4);
System.out.println("The bar volume is : " + bar.getVolume());
由于在 getVolume() 方法中,SubClass Bar 使用了 super.getVolume(),我想知道答案是 1 * 2 * 3 + 4 = 10 还是 1 * 1 * 1 + 4 = 5?
一般来说,如果子类调用了超类的方法,需要访问类中的某些字段,那么会使用哪个类字段呢?就像在这个例子中,如果 super.getVolume() 使用 SuperClass Foo 中的字段,那么它将返回 1 * 2 * 3 = 6,如果它使用 SubClass Bar 中的字段,它将返回 1 * 1 * 1 ?
有人可以帮我澄清这一点并详细解释原因吗?提前致谢。