본문 바로가기

OOP

다형성

강아지,고양이,하마,햄스터등 이와같은 동물들의 공통적인 행동을 그룹화 싶을 때 어떻게 하면 좋을까? 먼저 하위클래스에 있는 고양이,강아지 클래스를 상위 클래스인 동물클래스로 상속시켜 오버라이딩을 시켜보자 

package ch01.sec01;

public class Animal {
	// 동물 무리를 지어서 움직이는 성향
	public void roam() {}
	
	// 소리 
	public void makeNoise() {}
	
	// 먹이
	public void eat() {}
}

 

package ch01.sec01;

public class Dog extends Animal {

}

package ch01.sec01;

public class Cat extends Animal {

}

 

 

동물 등록을 하는 MyAnimalList 클래스에 강아지나 고양이같은 추상 타입 객체를 새로 만들 수 없어서 추상타입의 객체들을 저장하기 위해 배열객체를 사용했다.

package ch01.sec01;



public class MyAnimalList {
	// Animal 객체를 만드는 것이 아니고 
	// 추상 타입의 객체 인스턴스를 새로 만들수 없어서 
	// 고양이,강아지 타입을 저장하기 위해 따로 배열객체를 만들었다.

	private Animal[] animals = new Animal[5];
	private int nextIndex = 0;
	
	public void add(Animal a) {
		if(nextIndex < animals.length) {
			animals[nextIndex] = a;
			System.out.println("동물등록 완료 " + nextIndex);
			nextIndex++;
		}
	}
}

 

 

동물 등록 테스트 코드 

package ch01.sec01;


public class AnimalTestDrive {

	public static void main(String[] args) {
		MyAnimalList list = new MyAnimalList();
		Dog a = new Dog(); // 강아지 객체로 생성
		Cat c = new Cat(); // 고양이 객체로 생성 
		list.add(a); // 동물 리스트등록 메서드에 강아지 객체등록 
		list.add(c); // 동물 리스트등록 메서드에 고양이 객체등록 

	}

}

 

 

강아지, 고양이 동물등록 성공

'OOP' 카테고리의 다른 글