자바(Java)/JAVA 2SE

다형성(Polymorphism)이란?

본클라쓰 2010. 11. 29. 15:57


 자바에서의 다형성은 클래스의 설계와 밀접한 관계를 가지고 있다. 다형성은 상속과 더불어 클래스의 계층을 쉽게 접근할 수 있는 방법을 제공한다. 다형성은 하나의 인터페이스를 사용하여 서로 다른 구현 방법을 제공하는 것을 의미하며 이 말은 같은 이름을 기진 메소드가 서로 다른 일을 하게 사용할 수 있음을 의미한다. 즉, 메소드 이름은 하나로 사용되지만 여러 개의 구현(One interface multiple implementaion)을 가지는 개념이 다형성이다.

 

 

최상위 인터페이스(공통된 특성을 가지는 인터페이스)

interface 동물 {

 

    밥먹기();
    달리기();


}


 이제 이 최상위 클래스에서 공통적으로 작성한 특성을 사용하는 동물 클래스를 구현해 보자.


강아지)

class 강아지 implements 동물 {

 

    밥먹기() { 강아지가 밥먹는 방법을 구현; }
    달리기() { 강아지가 달리는 방법을 구현; }


}

 

고양이)

class 고양이 implements 동물 {


    밥먹기() { 고양이가 밥먹는 방법을 구현; }
    달리기() { 고양이가 달리는 방법을 구현; }


}

 

햄스터)

class 햄스터 implements 동물 {


    밥먹기() { 햄스터가 밥먹는 방법을 구현; }
    달리기() { 햄스터가 달리는 방법을 구현; }


}

 

 이렇게 클래스가 최상위 인터페이스인 동물을 구현한 강아지, 고양이, 햄스터 클래스들이 존재한다면 다형성은 하위 클래스의 메소드에 접근할 때 최상위 인터페이스를 통해 접근할 수 있는 방법을 제공한다. 이런 다형성은 제대로된 클래스 설계만 한다면 변화와 효율적으로 대체할 수 있는 수단을 제공한다. 즉, 구현은 어떻게 되어 있는지 상관하지 않고 일관된 사용방법을 제공할 수 있다.

 

 

강아지 클래스 사용시 코드)

동물 animal = new 강아지();

 

animal.밥먹기();

animal.달리기();

 

고양이 클래스 사용시 코드)

동물 animal = new 고양이();

 

animal.밥먹기();

animal.달리기();

 

 위에 처럼 굵은 글씨로 되어 있는 부분은 일관성을 유지할 수 있고, 붉은 색 글씨 부분만 변화되는 것을 알 수 있다.  이런 다형성은 클래스의 사용시에 유연한 방법을 제공해 준다.


'자바(Java) > JAVA 2SE' 카테고리의 다른 글

자바의 변수와 데이터 타입  (0) 2010.11.29
추상클래스와 인터페이스의 사용  (0) 2010.11.29
캡슐화(Encapsulation)란?  (0) 2010.11.29
상속(Inheritance) 이란?  (0) 2010.11.29
클래스(Class)란?  (0) 2010.11.29