2014-03-06 117 views
-2

所以我有點明白如何對象面向的作品,但我想知道,如果你能做到這一點:Java對象混亂

有一定類型的對象的ArrayList,讓我們說水果。假設我們有5種類型的水果,當我們添加到數組列表中時,我們會隨機添加5種類型之一。這是否可能,如果是的話,你會如何設置它?

+0

你能告訴我們一些代碼嗎? –

+7

測試一下,當你有特定的編程問題時回來,而不是*如果我可以這樣做會發生什麼,但我不想這樣做?*問題。 –

回答

7

的設立

因此,讓我們假設你有一個超Fruit

public class Fruit 

那麼你已經有了一些類,使用它..

public class Apple extends Fruit 

public class Pear extends Fruit 

如果你想成爲厚臉皮..

public class Tomato extends Fruit 

定義您ArrayList

List<Fruit> fruit = new ArrayList<Fruit>(); 

和你crea一種方法..

public Fruit getNextFruit() 
{ 
    // First create a random number. 

    int randomNum = new Random().nextInt(5); 

    // Then this is where I stop coding. 
} 

你的任務是..

現在它的你來休息編碼。你將有一個隨機數字,以及幾種不同類型的Fruit。你可以對此做各種各樣的事情,但是邏輯應該歸功於你。

+1

+1番茄。 – aliteralmind

1

當然可以。如果您將ArrayList的泛型類型定義爲Fruit,那麼您可以像香蕉,橘子,蘋果,西番蓮果一樣傳遞任何東西。

5

這是可能的!以這三個類(當然有三個不同的.java文件)。

public class Fruit {} 
public class Apple extends Fruit {} 
public class Orange extends Fruit {} 

現在將它們添加到列表中。

ArrayList<Fruit> basket = new ArrayList<>(); 
basket.add(new Orange()); 
basket.add(new Apple()); 

你可以這樣做沒有問題,因爲你創建的Fruit列表。 AppleFruit,並且OrangeFruit是一個關係很重要。

以下將不起作用,因爲Orange不是Apple

ArrayList<Apple> apples = new ArrayList<>(); 
apples.add(new Orange()); // ERROR! 

瑣事

在Java中的一切物體從Object類繼承。這樣就可以將任何東西添加到對象列表中。

ArrayList<Object> birthday = new ArrayList<>(); 
birthday.add(new Girlfriend()); 
birthday.add(new TV()); 
birthday.add(new Car()); 
+0

如果我告訴你,你可以在'List '中添加一個'Orange' ... –

+0

@LuiggiMendoza我不確定你想要做什麼。 – Rainbolt

+0

出於測試目的,它不必位於三個不同的文件中。只需從所有類別中選出「公共」,並將該文件命名爲公共文件。 – aliteralmind

0

是的,如果你所有的物體從一個超類水果繼承:

List<Fruit> list = new ArrayList<>(); 

這個名單可以添加任何種類的水果,只要在擴展類的水果「。