Programming/etc

오버로딩(Overloading)과 오버라이딩(Overriding)과 다형성(Polymorphism)

esoog Polaris 2023. 7. 13. 16:15
반응형

오버로딩(Overloading), 오버라이딩(Overriding), 그리고 다형성(Polymorphism)은 객체지향 프로그래밍에서 중요한 개념입니다. 다음은 각 개념에 대한 비교 설명입니다:

1. 오버로딩(Overloading):
   - 오버로딩은 하나의 클래스 내에서 메서드의 이름은 동일하지만 매개변수의 타입, 개수, 또는 순서가 다른 여러 버전의 메서드를 정의하는 것을 말합니다.
   - 오버로딩을 통해 동일한 작업을 수행하는 메서드를 가독성 좋게 이름을 유지하면서 다양한 매개변수 조합으로 호출할 수 있습니다.
   - 오버로딩은 컴파일러가 메서드 호출을 분석하여 알맞은 버전의 메서드를 선택하는 정적(compile-time) 다형성의 한 형태입니다.

2. 오버라이딩(Overriding):
   - 오버라이딩은 부모 클래스에서 이미 정의된 메서드를 하위 클래스에서 재정의하는 것을 말합니다.
   - 오버라이딩을 통해 하위 클래스는 동일한 시그니처(메서드 이름, 매개변수 타입 및 개수)를 가진 메서드를 재정의하여 자신의 동작을 구현할 수 있습니다.
   - 오버라이딩은 런타임 시에 메서드 호출을 기반으로 선택되며, 동적(dynamic) 다형성을 구현하는 방식입니다.
   - 오버라이딩은 상속 관계에서 발생하며, 부모 클래스의 메서드를 자식 클래스에서 재정의하여 다양한 동작을 수행할 수 있습니다.

3. 다형성(Polymorphism):
   - 다형성은 하나의 코드가 여러 가지 형태로 동작할 수 있는 성질을 말합니다.
   - 다형성은 오버로딩과 오버라이딩을 통해 구현될 수 있습니다.
   - 정적 다형성은 컴파일 시에 메서드 호출이 결정되는 오버로딩을 의미합니다.
   - 동적 다형성은 런타임 시에 메서드 호출이 결정되는 오버라이딩을 의미합니다.
   - 다형성을 활용하면 일관된 인터페이스를 유지하면서 다양한 객체 타입을 처리할 수 있으며, 유연하고 확장 가능한 코드를 작성할 수 있습니다.

요약하면, 오버로딩은 하나의 클래스 내에서 동일한 이름의 메서드를 다양한 매개변수로 정의하는 것이고, 오버라이딩은 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것입니다. 이러한 오버로딩과 오버라이딩을 통해 다형성이 구현되며, 다형성은 하나의 코드가 다양한 형태로 동작할 수 있는 성질을 갖습니다.

728x90