![](/img/trans.png)
[英]How to access (shadowing) member variables in subclass from method in superclass?
[英]Can I access static member variables defined on the subclass from a method on the abstract superclass?
我有一個抽象類,只有一個具體的方法。 在這個方法中,我想使用派生自聲明方法的類的靜態類變量。為此,我當然也必須在抽象類中聲明這個靜態變量。
調用該方法時,變量將解析為抽象基類中的變量,而不是派生類中的變量。 我是否需要使用屬性修飾派生類的屬性?
我是在嘗試做一些Java不支持的事情,還是我只是缺少某些東西?
你正試圖做一些不受支持的事情。 字段不能被“覆蓋” - 靜態成員不會多態化。
相反,創建可以在派生類中實現的抽象屬性 。 即使它們返回靜態變量,它們也必須是實例屬性。
您不能覆蓋變量,只能覆蓋方法。 如果子類可能需要提供不同的值,請將getter方法添加到執行該操作的類中。
abstract class Foo {
static private final String someValue = "blah";
String getSomeValue() {
return someValue;
}
public abstract void someMethod();
}
class Bar extends Foo {
String getSomeValue() {
return "somethingElse";
}
public void someMethod() {
String x = getSomeValue();
}
}
根據您的要求,您可以:
Base b = new Sub();
System.out.println(b.myInt); // will print myInt from Base
Sub s = new Sub();
System.out.println(s.myInt); // will print myInt from Sub
,但你可能想要Jon的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.