如何从超类中的方法访问(阴影)子类中的成员变量?

时间:2014-09-07 18:55:26

标签: java subclass member shadowing

如果有人不理解这个问题,请告诉我。我尽力构建下面的问题。 我在父类中有一个用于生成模式的常用方法。为了重用性,我想在父类下保留这个方法。

在方法内部,我使用了几个变量。所以我认为最好将对象作为参数传递给方法generatePattern。但由于变量无法被覆盖,我如何使用这些子类中的相应变量?除了使用子类之外,java中的任何其他功能?将"通用类型"作为这种情况下的参数工作?

class Parent {
    int var1;
    String[] values;

    void generatePattern(Parent obj1) {
        // This will not make use of respective values of 
        // subclass object that is passed I guess.
        newPattern(obj1.values, obj1.var1);    
    }
}

class AscendSubClass extends Parent {
    int var1 = 5;
    String[] values = {"S", "R"};
}

class DescendSubClass extends Parent {
    int var1 = 10;
    String[] values = {"N", "D"};
}

我可以将AscendSubClass或DescendSubClass传递给generatePattern()。 在这个方法中,我需要使用变量var1,values和子类的许多其他变量。 这些变量具有相同的类型且具有相同的名称,但值不同并且取决于子类。我现在如何在generatePattern()中引用这些变量,以便方法不会改变? 可以通过将变量作为方法的参数或通过if / else语句来实现这一点,但是我有几个变量需要通过,这给您带来很大的不便。

1 个答案:

答案 0 :(得分:1)

添加一个getter方法并在子类中覆盖它。

public int getVar() {
    return var1;
}