자바에서의 다형성은 클래스의 설계와 밀접한 관계를 가지고 있다. 다형성은 상속과 더불어 클래스의 계층을 쉽게 접근할 수 있는 방법을 제공한다. 다형성은 하나의 인터페이스를 사용하여 서로 다른 구현 방법을 제공하는 것을 의미하며 이 말은 같은 이름을 기진 메소드가 서로 다른 일을 하게 사용할 수 있음을 의미한다. 즉, 메소드 이름은 하나로 사용되지만 여러 개의 구현(One interface multiple implementaion)을 가지는 개념이 다형성이다.
최상위 인터페이스(공통된 특성을 가지는 인터페이스)
밥먹기();
달리기();
}
이제 이 최상위 클래스에서 공통적으로 작성한 특성을 사용하는 동물 클래스를 구현해 보자.
강아지)
밥먹기() { 강아지가 밥먹는 방법을 구현; }
달리기() { 강아지가 달리는 방법을 구현; }
}
고양이)
밥먹기() { 고양이가 밥먹는 방법을 구현; }
달리기() { 고양이가 달리는 방법을 구현; }
}
햄스터)
밥먹기() { 햄스터가 밥먹는 방법을 구현; }
달리기() { 햄스터가 달리는 방법을 구현; }
}
이렇게 클래스가 최상위 인터페이스인 동물을 구현한 강아지, 고양이, 햄스터 클래스들이 존재한다면 다형성은 하위 클래스의 메소드에 접근할 때 최상위 인터페이스를 통해 접근할 수 있는 방법을 제공한다. 이런 다형성은 제대로된 클래스 설계만 한다면 변화와 효율적으로 대체할 수 있는 수단을 제공한다. 즉, 구현은 어떻게 되어 있는지 상관하지 않고 일관된 사용방법을 제공할 수 있다.
강아지 클래스 사용시 코드)
animal.밥먹기();
animal.달리기();
고양이 클래스 사용시 코드)
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 |