본문 바로가기
프로그래밍 언어/JAVA(자바) 응용

27.다형성

by lroot 2022. 5. 24.
728x90
반응형

다형성(polymorphism)

- 하나의 코드가 여러 자료형으로 구현되어 실행되는 것

- 같은 코드에서 여러 다른 실행 결과가 나옴

- 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나임

- 다형성을 잘 활용하면 유연하고 확장성있고, 유지보수가 편리한 프로그램을 만들 수 있음

 

예제

- AnimalTest.java

class Animal{

public void move(){
System.out.println("이동");
}
}

class Human extends Animal{

@Override
public void move() {
System.out.println("사람이 이동");
}

public void readBook() {
System.out.println("사람이 책을 읽는다");
}
}


class Tiger extends Animal{
@Override
public void move() {
System.out.println("호랑이 이동");
}

public void hunt() {
System.out.println("호랑이가 사냥한다");
}
}

class Eagle extends Animal{
@Override
public void move() {
System.out.println("독수리가 이동");
}

public void fly() {
System.out.println("독수리가 날아다닌다");
}
}



public class AnimalTest {

public static void main(String[] args) {

Animal human = new Human();
Animal tiger = new Tiger();
Animal eagle = new Eagle();

AnimalTest animaltest = new AnimalTest();
animaltest.moveAnimal(human);
animaltest.moveAnimal(tiger);
animaltest.moveAnimal(eagle);


}

public void moveAnimal(Animal animal) {
animal.move();
}

}

 

다형성을 사용하는 이유

- 다른 클래스를 추가하는 경우

- 상속과 메서드 재정의를 활용하여 확장성 있는 프로그램을 만들 수 있음

- 그렇지 않는 경우 많은 if-else-if문이 구현되고 코드의 유지보수가 어려워짐

- 상위 클래스에서는 공통적인 부분을 제공하고 하위 클래스에서는 각 클래스에 맞는 기능 구현

- 여러 클래스를 하나의 타입(상위 클래스)으로 핸들링 할 수 있음

 

 

 

 

댓글