2012-12-28 36 views
0

在下面的代码中应该在'<'和'>'之间放置什么,以便我能够添加Animal超类的每个子类的新对象?属于超类的不同类的对象的ArrayList?

package animal; 

import javax.swing.JOptionPane; 
import java.util.ArrayList; 

public class Animal { 

    public static void main(String[] args) { 
     Animal createAnimals = new Animal(); 
     createAnimals.userInputHandle(); 

     ArrayList <> animalList = new ArrayList<>(); 
     animalList.add(new Dog); 

    } 

    private String userInputHandle(){ 

     String userInput; 
     userInput = JOptionPane.showInputDialog("Select animal from the " 
       + "following list" 
       + "\n1.Dog\n2.Cat\n3.Snake\n4.Frog" 
       + "\n5.Human\n6.Shark\n7.Sea Gulls"); 
     userInput = userInput.toLowerCase(); 

    return userInput;} 
} 

class Fish extends Animal{ 




} 
class Amphibians extends Animal{ 

} 
class Reptiles extends Animal{} 
class Birds extends Animal{} 

因此,我将在Animal类中创建一个方法并为每个子类重写它。例如两栖动物 - >青蛙属于两栖动物类,等等。

+0

它将只是'动物',因为你将从'动物'类 –

回答

2

如果您作出声明

ArrayList <Animal> animalList = new ArrayList<Animal>(); 

,那么你就可以在动物的任何子类添加到它。

3
// this will work fine as 'Animal' will be base class for other class 
ArrayList <Animal> animalList = new ArrayList<Animal>(); 
// 
animalList.add(new Reptiles()); 
animalList.add(new Birds()); 
animalList.add(new Amphibians()); 
+0

派生出其他类,这解决了它。它感觉很愚蠢,无法弄清楚这一点。谢谢。 – user1837224

+0

yw非常欢迎,随时将问题标记为已解决,因为这也会帮助其他学习者! –

+0

在编程的世界里有一种愚蠢的行为,一切都是一种体验,而且在我人生的某个时刻,我一直处于同一条路上:P! –

1

让你的ArrayList像你这样的声明。

ArrayList <Animal> animalList = new ArrayList<Animal>(); 

添加Animal的子类。

animalList.add(new Monkey()); 
animalList.add(new Donkey()); 

如果您使用的是Java SE7另一种方式来实例化一个泛型(在你的情况下,一个ArrayList)是使用有限的类型推断这个样子。

ArrayList <Animal> animalList = new ArrayList<>(); 
相关问题