2016-11-24 2 views
-3

앵무새 (또는 다른 동물) 객체를 addAnimal (동물 동물) 메서드에 전달할 수 있기를 원합니다. 생성자에서 직접 배열 목록에 동물을 추가 할 수 있지만 나중에 생성자에 없을 다른 동물이 추가됩니다. 따라서 공개 방법.수퍼 클래스를 원하는 메소드의 인수로 서브 클래스를 전달할 수 있습니까?

모든 종류의 동물이 논점으로 전달되도록하려면 어떻게해야합니까?

** 생성자 및 기본 구문 문제를 해결하기 위해 수정되었습니다. 문제가 여전히 존재합니다.

class Zoo extends Animal{ 
    private ArrayList<Animal> animals; 

    public Zoo { 
    Parrot parrot = new Parrot(); 
    animals.addAnimal(parrot);  // cannot find methodaddAnimal(parrot) 
    } 

    public void addAnimal(Animal animal) { 
    animals.add(animal); 
    } 
} 

class Animal { 
    // variables and methods 
} 

class Parrot extends Animal { 
    // variables and methods 
} 
+0

클래스 정의의 중간에'animals.addAnimal (parrot)'을 쓸 수 없다. 그런 종류의 수업은 방법 안에 있어야합니다. 또한'Parrot' 클래스는'Animal' 대신'animal'을 확장합니다. – khelwood

+0

이 코드가 컴파일되지 않는 이유는 무엇입니까? 목록 선언 다음에 세미콜론을 잊어 버렸습니다. 그리고 메소드에만 존재할 수있는 클래스에 직접 코드를 넣습니다. 그리고 ArrayList에는 addAnimal 메서드가 없으며 add 메서드 만 있습니다. 모두 고정되어 있어도 목록이 null이므로 런타임에 실패합니다. –

+0

죄송합니다. 얘들 아, 여기서 내 근원의 작은 부분을 복사하려했는데, 그다지 잘하지 못했다. Parrot의 적절한 생성자를 편집하고 추가하여 구문 문제를 해결할 것입니다. 실제 코드에는 구문 오류가 없습니다. – KalebB

답변

0

당신은 코멘트를 아래의 코드와 같이 오히려 당신이 Zoo 클래스 객체의 addAnimal()를 호출 할 필요가 존재하지 않는 ArrayList 객체의 addAnimal() 메소드를 호출하려고 :

class Zoo { 

    private ArrayList<Animal> animals; 

    //create a main method 
    public static void main(String[] args) { 

     Zoo zoo = new Zoo();//Create Zoo object 
     Parrot parrot = new Parrot(); 
     zoo.addAnimal(parrot);//add parraot to list by calling addAnimal 
    } 

    public void addAnimal(Animal animal) { 
    animals.add(animal); 
    } 
} 
0
import java.util.ArrayList; 
import java.util.List; 

class Zoo { 
    private List<Animal> animals = new ArrayList<Animal>(); 
    public void addAnimal(Animal animal) { 
     animals.add(animal); 
    } 

    public static void main(String... args){ 
     Zoo zoo = new Zoo(); 
     zoo.addAnimal(new Parrot()); 
    } 
} 

class Animal { 
    // variables and methods 
} 

class Parrot extends Animal { 
    // variables and methods 
} 
관련 문제