2015-02-07 26 views
0

我正在編寫一個元胞自動機模擬程序,我目前有幾個Cell對象的子類對應於我想運行的每種類型的模擬,並且每個子類都有一個setNeighbors方法另一個類根據其在網格中的位置調用設置單元的鄰居。將重複的代碼移動到超類時重寫實例變量Java

public abstract class LifeCell extends Cell{ 
    protected List<LifeCell> myNeighbors 

    public void setNeighbors(List<LifeCell> neighbors){ 
     myNeighbors=neighbors; 
    } 

public abstract class FireCell extends Cell{ 
    protected List<FireCell> myNeighbors 

    public void setNeighbors(List<FireCell> neighbors){ 
     myNeighbors=neighbors; 
    } 

等 的setNeighbors方法目前跨子重複,我想給鄰居列表中移動到細胞超類的抽象Cell對象的列表。在我的細胞超的代碼目前看起來是這樣的:

public abstract class Cell { 
    List<Cell> myNeighbors; 

    public void setNeighbors(List<Cell> neighbors){ 
     myNeighbors = neighbors; 
    } 
} 

然而,相鄰小區的子類列表是爲每個特定的子類相同類型的細胞中是很重要的(GameOfLifeCells應該只有GameOfLifeCells作爲其鄰居)。我似乎沒有可能在超類中聲明一個鄰居列表,然後用子類中的一個typeCell列表覆蓋該實例變量。

我還能如何表達每個單元格具有相同類型的鄰居並仍然能夠從超類訪問此列表的關係?

+1

你能寫你的代碼,以便我們可以幫助您? – Fawzinov 2015-02-07 16:26:40

+0

請提供具體的代碼示例和一個明確的問題 – Tarik 2015-02-07 16:29:59

+0

使它成爲'?擴展單元格... – Fildor 2015-02-07 17:19:02

回答

0

也許有一點是這樣的:

abstract class TestSuper<T extends TestSuper>{ 
    protected List<T> myList; 
    public void method(List<T> param){ 
     myList = param; 
    } 
} 

class TestChild extends TestSuper<TestChild>{}