추상화와 다형성은 객체 지향 프로그래밍(OOP)의 핵심 개념 중 두 가지로 코드의 유연성과 재사용성을 높이는 데 중요한 역할을 한다.
1. 추상화 (Abstraction)
추상화는 객체의 세부 사항을 숨기고, 중요한 특징만을 드러내는 과정입니다.
이를 통해 복잡한 시스템을 간결하고 이해하기 쉽게 만들 수 있습니다. 즉, 복잡한 실제 시스템을 단순한 모델로 표현하는 방식입니다.
특징:
- 구체적인 구현을 숨김: 사용자는 객체의 세부적인 구현 방식이 아닌, 기능만을 볼 수 있습니다.
- 추상 클래스와 인터페이스를 활용: 추상화를 달성하기 위해 주로 추상 클래스와 인터페이스를 사용합니다. 추상 클래스는 일부 구현을 가질 수 있지만, 인터페이스는 모든 메서드가 구현되지 않은 형태로 제공됩니다.
2. 다형성 (Polymorphism)
다형성은 동일한 메서드나 객체가 다양한 방식으로 동작할 수 있게 하는 개념입니다.
다형성은 크게 두 가지 형태로 나눌 수 있습니다:
- 컴파일 시 다형성(오버로딩, 메서드 오버로딩)
- 런타임 시 다형성(오버라이딩, 객체 지향 다형성)
특징:
- 동일한 이름, 다른 동작: 하나의 메서드 또는 연산자가 여러 형태로 동작할 수 있습니다.
- 동적 바인딩: 런타임 시점에 어떤 메서드가 호출될지 결정됩니다. 객체의 실제 타입에 따라 호출되는 메서드가 달라집니다.
추상화와 다형성의 차이점 요약
- 추상화는 복잡한 시스템에서 중요한 개념만을 노출하고, 세부 사항은 감추는 것입니다. 즉, 객체의 핵심적인 행동을 드러내고 구현 세부 사항을 숨깁니다.
- 다형성은 동일한 메서드나 클래스가 다양한 방식으로 동작할 수 있게 만드는 것입니다. 런타임에 객체의 타입에 따라 메서드가 다르게 동작하거나, 동일한 이름의 메서드가 여러 형태로 정의될 수 있습니다.
'공부 노트' 카테고리의 다른 글
빈(Bean)이란? (1) | 2024.10.02 |
---|---|
응답 코드 확인 (꼭 알아 두어야 하는 코드!!) (0) | 2024.10.02 |
스레드란? (스레드/멀티스레드) (4) | 2024.09.25 |
싱글톤 패턴이란? (1) | 2024.09.25 |
Spring Boot - IoC란? (제어의 역전) // 싱글톤 패턴 (공부하기) (0) | 2024.08.13 |