2014-05-17 122 views
0

什麼是最好/最有效的方法來創建一個包含其他類的類,並且它可以被添加到數組中?Java,堆棧類

Basicaly我想有類,用於保存「姓名」,「VAL1」和「VAL2」所以我猜最好的辦法是簡單:

public class SubClass { 

private String name; 
private double val1; 
private double val2; 

public SubClass(String name, double val1, double val2) { 
    this.setName(name); 
    this.setVal1(val1); 
      this.setVal2(val2); 
} 

與所有的「設置」和「得到」方法在裏面。所以我可以把它作爲Array SubClass []。 但我也想'UpperClass',我可以添加多個'SubClass'與它UpperClass.add(SubClass1);但我也希望UpperClass有自己的'名稱',並舉行它和Array UpperClass []一樣。我想把它當作數組來概括單獨的列,這樣我可以顯示它:

UpperClassName 25 56 
Sub1    10 20 
Sub2    15 36  

我想我可以創建SubClass(String UpperClassName)然後用setVal中,我會在這個高年級添加所有其他子類的VAL1,然後就把它全部當作一個Array,聽起來有點亂。

And Finaly我想要將相同的UpperClass添加到SuperClass中,但僅作爲UpperClass的第一行。但是我認爲這只是UpperClass的一些小修改? 要獲取:

UpperClassName 25 56 
UpperCLassName 30 87 
UpperClassName 20 78 

有沒有簡單的(乾淨)的方式來做到這一點?

+1

我不明白你的問題。 –

+0

你不明白什麼?我希望能夠創建類,我會扔給UpperClass,我將它們全部轉換爲數組+名稱和該數組的值 – Rebel

回答

3

好的,所以你想擁有列車,包含汽車,包含人員。而且你希望能夠知道每個人有多少錢,而且每輛車和每列火車有多少錢。

所以你需要

public class Person { 
    private double money; 

    public double getMoney() 
     return money; 
    } 
    ... 
} 

public class Car { 
    private List<Person> persons; 

    public double getMoney { 
     double result = 0.0; 
     for (Person person: persons) { 
      result += person.getMoney(); 
     } 
     return result; 
    } 
    ... 
} 

public class Train { 
    private List<Car> cars; 

    public double getMoney() { 
     double result = 0.0; 
     for (Car car : cars) { 
      result += car.getMoney(); 
     } 
     return result; 
    } 
    ... 
} 

至於這麼簡單。就像真實的對象一樣,Java對象可以包含其他對象。

+0

那! thx我想使它在一些瘋狂的複雜的方式... – Rebel

+0

@JB尼澤...很好的解決方案..是一個名稱(標準)的設計模式?如果是的話,你可以給名稱 –

+0

@YSBhai:不是一個真正的設計模式。我會稱它爲「構圖」。 –