본문 바로가기
빅데이터 분석기사,ADsP와 ADP

다형성(Polymorphism) - 객체지향 프로그래밍

by 귀주대 2024. 2. 12.

 

다형성(Polymorphism)은 객체지향 프로그래밍(OOP)의 중요한 개념 중 하나로, 하나의 인터페이스나 메소드를 여러 형태로 구현할 수 있는 능력을 나타냅니다. 다형성은 코드의 재사용성과 유연성을 높이며, 객체 지향의 특성 중 하나인 추상화를 실현합니다. 아래에서는 다형성에 대한 자세한 설명을 제공합니다.

 


1. 다형성의 개념:

 

다형성은 "다양한 형태"를 의미하며, 객체 지향 프로그래밍에서는 주로 두 가지 형태로 나타납니다.
컴파일 타임 다형성(Compile-Time Polymorphism 또는 정적 다형성): 메소드 오버로딩(Overloading)을 통해 구현되며, 같은 메소드 이름을 가지면서 매개변수의 타입 또는 개수가 다른 여러 메소드를 정의하는 것을 의미합니다.
런타임 다형성(Runtime Polymorphism 또는 동적 다형성): 상속과 인터페이스를 기반으로 구현되며, 하나의 메소드 호출에 대해 다양한 클래스에서 다르게 구현될 수 있는 능력을 의미합니다.

 

 

2. 컴파일 타임 다형성 (메소드 오버로딩):

 

메소드 오버로딩은 같은 메소드 이름을 가지면서 매개변수의 개수나 타입을 다르게 정의하는 것을 의미합니다.
컴파일러가 컴파일 시에 어떤 메소드를 호출할지 결정합니다.

 


3. 런타임 다형성 (상속과 인터페이스):

 

런타임 다형성은 상속과 인터페이스를 기반으로 동작하며, 하위 클래스나 구현 클래스가 상위 클래스나 인터페이스의 메소드를 다르게 구현할 수 있는 능력을 의미합니다.
부모 클래스 또는 인터페이스의 참조 변수로 자식 클래스의 객체를 참조할 수 있습니다.

 


4. 다형성의 장점:

 

코드 재사용성: 동일한 인터페이스를 사용하여 다양한 클래스를 사용할 수 있어 코드의 재사용성이 높아집니다.
유연성과 확장성: 새로운 클래스를 추가하거나 기존 클래스를 변경할 때, 인터페이스를 그대로 사용하여 손쉽게 확장하고 변경할 수 있습니다.
유지보수 용이성: 코드를 더 쉽게 이해하고 유지보수할 수 있도록 합니다.

 

 

5. 결론:

 

다형성은 객체 지향 프로그래밍의 강력한 특성 중 하나로, 코드의 재사용성과 유연성을 향상시키며, 객체 지향의 핵심 개념 중 하나인 추상화를 실현하는 데에 기여합니다. 컴파일 타임 다형성과 런타임 다형성을 통해 객체 지향 언어에서 다양한 상황에 대응할 수 있는 능력을 제공합니다.

 

댓글