2014-03-06 85 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<>(); 

这个名单可以添加任何种类的水果,只要在扩展类的水果“。