[Java] 다형성 활용

정석·2024년 2월 1일

Java

목록 보기
32/39
post-thumbnail

김영한의 자바 강의를 듣고 정리한 내용입니다.

부모를 상속하는 자식 클래스들을 만들어 활용하는 법

  • 부모 Aniaml 클래스
public class Animal {
	public void sound() {
    	System.out.println("동물 울음 소리");
    }
}
  • 각 자식 클래스
public class Dog extends Animal {
	@Override
    public void sound() {
    	System.out.println("멍멍");
    }
}
public class Cat extends Animal {
	@Override
    public void sound() {
    	System.out.println("냐옹");
    }
}
public class Caw extends Animal {
	@Override
    public void sound() {
    	System.out.println("음메");
    }
}

아래의 메인 코드가 전부 같은 결과를 반환한다.

public class AnimalPolyMain2 {
     public static void main(String[] args) {
         Dog dog = new Dog();
         Cat cat = new Cat();
         Caw caw = new Caw();
         Animal[] animalArr = {dog, cat, caw};

         //변하지 않는 부분
         for (Animal animal : animalArr) {
              System.out.println("동물 소리 테스트 시작"); animal.sound();
              System.out.println("동물 소리 테스트 종료");
		}
	}
}
public class AnimalPolyMain1 {
    public static void main(String[] args) {
        Dog dog = new Dog();
        Cat cat = new Cat();
        Caw caw = new Caw();
        
        soundAnimal(dog);
        soundAnimal(cat);
        soundAnimal(caw);
}
    //동물이 추가 되어도 변하지 않는 코드
    private static void soundAnimal(Animal animal) {
    	System.out.println("동물 소리 테스트 시작"); 
        animal.sound();
    	System.out.println("동물 소리 테스트 종료");
}
}
public class AnimalPolyMain3 {

     public static void main(String[] args) {
         Animal[] animalArr = {new Dog(), new Cat(), new Caw()};
         for (Animal animal : animalArr) {
             soundAnimal(animal);
         }
	}
    //동물이 추가 되어도 변하지 않는 코드
    private static void soundAnimal(Animal animal) {
    	System.out.println("동물 소리 테스트 시작"); 
        animal.sound();
    	System.out.println("동물 소리 테스트 종료");
	} 
}

0개의 댓글