공부 노트

추상화와 다형성

미로910 2024. 9. 26. 10:41

추상화다형성은 객체 지향 프로그래밍(OOP)의 핵심 개념 중 두 가지로 코드의 유연성과 재사용성을 높이는 데 중요한 역할을 한다.

 

1. 추상화 (Abstraction)

추상화는 객체의 세부 사항을 숨기고, 중요한 특징만을 드러내는 과정입니다.

이를 통해 복잡한 시스템을 간결하고 이해하기 쉽게 만들 수 있습니다. 즉, 복잡한 실제 시스템을 단순한 모델로 표현하는 방식입니다.

특징:

 

  • 구체적인 구현을 숨김: 사용자는 객체의 세부적인 구현 방식이 아닌, 기능만을 볼 수 있습니다.
  • 추상 클래스와 인터페이스를 활용: 추상화를 달성하기 위해 주로 추상 클래스와 인터페이스를 사용합니다. 추상 클래스는 일부 구현을 가질 수 있지만, 인터페이스는 모든 메서드가 구현되지 않은 형태로 제공됩니다.

 

 

2. 다형성 (Polymorphism)

다형성은 동일한 메서드나 객체가 다양한 방식으로 동작할 수 있게 하는 개념입니다.

다형성은 크게 두 가지 형태로 나눌 수 있습니다:

 

  • 컴파일 시 다형성(오버로딩, 메서드 오버로딩)
  • 런타임 시 다형성(오버라이딩, 객체 지향 다형성)

특징: 

 

  • 동일한 이름, 다른 동작: 하나의 메서드 또는 연산자가 여러 형태로 동작할 수 있습니다.
  • 동적 바인딩: 런타임 시점에 어떤 메서드가 호출될지 결정됩니다. 객체의 실제 타입에 따라 호출되는 메서드가 달라집니다.

 

 

추상화와 다형성의 차이점 요약

  • 추상화는 복잡한 시스템에서 중요한 개념만을 노출하고, 세부 사항은 감추는 것입니다. 즉, 객체의 핵심적인 행동을 드러내고 구현 세부 사항을 숨깁니다.
  • 다형성은 동일한 메서드나 클래스가 다양한 방식으로 동작할 수 있게 만드는 것입니다. 런타임에 객체의 타입에 따라 메서드가 다르게 동작하거나, 동일한 이름의 메서드가 여러 형태로 정의될 수 있습니다.