2016-04-14 44 views
0

我有2個類的設置,都擴展了一個Module類。我試圖在其中一箇中設置2個整數,並在另一箇中使用2個整數。但是,當我執行所有事情時,它確實被設置(我知道是因爲調試),但是當'打印'的方法運行時,它仍然是0.帶有全局變量的Java中的抽象類沒有設置?

雖然我不知道我在做什麼錯。

模塊類:

public abstract class Module { 
    protected int min, max; 
} 

Foo1:

public class Foo1 extends Module { 
    public void setMinMax(){ 
     min = 2; 
     max = 5; 
    } 
} 

foo2的:

public class Foo2 extends Module { 
    public void printMinMax(){ 
     System.out.print("Min: " + min + " Max: " + max); 
    } 
} 
+2

你是什麼意思的「全局變量」?在你的代碼中'setMinMax()'不會影響'printMinMax()'是很自然的,因爲沒有一個實例可以同時擁有這兩種方法,因爲它們在不同的類中。 – MikeCAT

+0

問題是你對java/oop的理解 – ControlAltDel

回答

0

當你設置一個實例,它有另一個實例沒有影響。每個實例都有自己的字段。最有可能的是你想象的是

public abstract class Module { 
    protected static int min, max; 
} 

這樣字段將在Module的所有實例之間共享。您應該只從一個靜態方法設置這些領域,理想上Module

然而,使用可變靜態字段只要有可能我會避免這樣做,或者。

+1

謝謝你做的工作! – MrDikke

1

您有2個不同類的2個實例。具有其自己的min/max的一個實例和具有其自己的min/maxFoo2,的另一個實例

請注意,您Foo類提供的字段,並且每個實例化(的Foo1Foo2)派生的實例時,你會得到一個新的類一組新的領域(包括那些從基類派生)