簡體   English   中英

如何從超類的方法訪問(屏蔽)子類中的成員變量?

[英]How to access (shadowing) member variables in subclass from method in superclass?

讓我知道是否有人不明白這個問題。 我盡力提出以下問題。 我在父類中有一個通用方法來生成模式。 為了提高可用性,我認為應將此方法保留在父類下。

在方法內部,我使用了幾個變量。 因此,我認為最好將對象作為參數傳遞給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,值和子類的許多其他變量。 這些變量具有相同的類型並具有相同的名稱,但是值不同並且取決於子類。 我現在如何在generatePattern()中引用這些變量,以使該方法不變? 可以通過將變量作為方法的參數或通過if / else語句來實現此目的,但是我要傳遞多個變量,這帶來了很大的不便。

添加一個getter方法,並在任一子類中覆蓋它。

public int getVar() {
    return var1;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM