IT용어위키



다형성


Polymorphism
상속되는 기능을 재정의하거나 하나의 인터페이스에 다양한 매소드를 정의하여 확장성, 유연성을 제공하는 객체지향 특징
  • 많은 상이한 클래스들이 동일한 메서드명을 이용하는 능력
  • 일반화된 객체는 어떤 특정 객체를 지칭할 수 있기 때문에 같은 동작을 하지만 다른 성질을 가질 수 없음

다형성으로 이룰 수 있는 것들

  • 확장성: 하나의 인터페이스에 메서드를 type 및 개수를 변경하여 재정의
  • 유연성: 하나의 인터페이스를 일관성있게 사용자 중심으로 제공
  • 재사용성: Overloading, Overriding을 이용한 재사용성 높임

구현 형태

오버라이딩

  • 부모에게 상속받은 오퍼레이션을 자식 클래스가 같은 이름으로 재정의 하는 경우
  • 이 경우 동일한 오퍼레이션이 여러 개 정의되는 것과 마찬가지 효과를 가짐
  • 부모의 오퍼레이션을 실행시킬 경우 부모 클래스의 이름을 지정해서 메소드를 호출해야 함

오버로딩

  • 동일한 클래스에 같은 이름을 가진 두 개 이상의 오퍼레이션을 정의하는 경우
  • 이 경우 이름은 같더라도 파라미터의 개수와 형식은 달라야 함
  • 객체지향 프로그래밍 언어에서는 파라미터의 개수와 형식만 다르면 얼마든지 같은 이름의 메소드를 정의 가능

예시

 1 class Shape {
 2     public void draw();
 3     public void erase();
 4 }
 5 
 6 class Circle extends Shape{
 7     int radius;
 8     public void draw(); // Overriding
 9     public void draw(int r); // Overloading
10     public void erase(); // Overriding
11 }
12 
13 class Square extends Shape{
14     int s_line;
15     public void draw(); // Overriding
16     public void draw(int a, int b) ; // Overloading
17     public void erase(); // Overriding
18 }
19 
20 class Triangle extends Shape{
21     int t_line;
22     public void draw(); // Overriding
23     public void draw(int line); // Overloading
24     public void erase(); // Overriding
25 }
26 
27 Class RunTest{
28     public void main(){
29         Shape s1 = new Circle();
30         Shape s2 = new Square();
31         Shape s3 = new Triangle();
32         s1.draw();  // 원이 그려지고 - overriding
33         s2.draw();  // 사각형이 그려지고 - overriding
34         s3.draw();  // 삼각형이 그려지고 - overriding
35     }
36 }

참고 문헌


  출처: IT위키(IT위키에서 최신 문서 보기)
  * 본 페이지는 공대위키에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 공대위키에서 확인하세요!