簡體   English   中英

我可以從抽象超類上的方法訪問子類上定義的靜態成員變量嗎?

[英]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.

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