앵무새 (또는 다른 동물) 객체를 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
}
클래스 정의의 중간에'animals.addAnimal (parrot)'을 쓸 수 없다. 그런 종류의 수업은 방법 안에 있어야합니다. 또한'Parrot' 클래스는'Animal' 대신'animal'을 확장합니다. – khelwood
이 코드가 컴파일되지 않는 이유는 무엇입니까? 목록 선언 다음에 세미콜론을 잊어 버렸습니다. 그리고 메소드에만 존재할 수있는 클래스에 직접 코드를 넣습니다. 그리고 ArrayList에는 addAnimal 메서드가 없으며 add 메서드 만 있습니다. 모두 고정되어 있어도 목록이 null이므로 런타임에 실패합니다. –
죄송합니다. 얘들 아, 여기서 내 근원의 작은 부분을 복사하려했는데, 그다지 잘하지 못했다. Parrot의 적절한 생성자를 편집하고 추가하여 구문 문제를 해결할 것입니다. 실제 코드에는 구문 오류가 없습니다. – KalebB