하나의 클래스가 있다고 가정 해 봅시다. - Animal
. 그리고 그것으로부터 상속받은 두 클래스가 있습니다 : Bird
, Cat
, Dog
.수퍼 클래스 개체 목록에서 서브 클래스 얻기
이제 Animal 유형의 배열 목록을 만들고 여기에 하위 클래스의 인스턴스를 추가합니다.
private List<Animal> list = new ArrayList<Animal>();
list.add(new Bird());
list.add(new Bird());
list.add(new Cat());
list.add(new Dog());
은 그 때 나는 등
for(int i = 0; i < list.length; i++)
{
list.get(i).makeSound();
}
좋아, 몇 가지 방법을 호출,이 목록을 통해 반복. 하지만 Bird
서브 클래스에 메소드를 추가하고자한다면, 이는 Animal
수퍼 클래스에서 구현되지 않을까요? 의이 말 fly()
방법 보자, 그래서 그 결과는 다음과 같습니다
for(int i = 0; i < list.length; i++)
{
list.get(i).makeSound();
if(list.get(i) instanceof Bird)
{
list.get(i).fly(); // error here
}
}
그것은 의미가 있지만,이 오류가 발생합니다 - 기호를 찾을 수 없습니다. Animal
클래스에서 메서드를 구현하면 문제가 해결되는 것 같지만 두 번해야 할 때 내 눈이 아플 수 있습니다. 이 문제를 해결할 방법이 있습니까?
이것은 무엇입니까? 'ArrayList list = new List ; 그 줄에 두 개의 컴파일 시간 오류 만 계산하면 ... –
예, 죄송합니다. – khernik