2017-09-03 56 views
-3

我已經搜索了有關調用變量時未通過StackOverflow創建對象的實例,發現答案是使用static關鍵字來聲明變量,您將能夠在擴展類沒有創建該類的實例但它不適用於我。這是我試過 -調用變量時不創建對象實例

abstract public class Flower{ 
     private static int petals; 
     public void setPetals(int petals){ 
      this.petals; 
     } 
} 

所以我從另一個類叫setPetals方法。我附上了截屏的那個課。如何在LotusFlower類中調用該花瓣變量? enter image description here

+0

這是'private'。 – user2357112

+0

你的'setPetal()'不是'static',你調用它,而不是訪問你的'static'變量'花瓣'...所以,在方法中加入'static' ... –

+1

我建議你有你的這樣做的好理由,但在我看來並不是一個好例子。如果你有幾個'Flower'的子類,並且它們中的每一個都設置了一個靜態值,那麼它的優先級將被覆蓋。 –

回答

0

幾件事情,以改善:

  1. setPetals方法定義也不是一成不變的,你實際上並沒有設置花瓣的值有:

    public static void setPetals(int petals){ 
        this.petals = petals; 
    } 
    
  2. 花瓣變量靜態,可以參照setPetals而不是:

    Flower.petals = petals; 
    
  3. 而且可以使用setPetals方法從另一個類爲:

    Flower.setPetals(100); 
    
+0

小心:「花瓣」是私人的,可以從另一個班級直接引用。 –

+0

@LittleSanti我所做的參考是在'setPetals'內。更新了答案以表明這一點。 – nullpointer