다형성

기술노트
Admin (토론 | 기여)님의 2025년 9월 6일 (토) 05:05 판 (Gemini 벌크 업로더로 자동 업로드)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

🎨 다형성 (Polymorphism)

다형성은 객체 지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 하나의 인터페이스나 부모 클래스를 사용하여 여러 다른 타입의 객체를 동일한 방식으로 다룰 수 있는 능력을 의미합니다. 즉, '여러(Poly) 형태(Morph)'를 가질 수 있다는 뜻입니다.

다형성을 통해 코드의 유연성과 재사용성이 크게 향상됩니다.


🧐 다형성의 종류

  • 오버라이딩 (Overriding) : 부모 클래스로부터 상속받은 메서드를 자식 클래스에서 재정의하는 것입니다. 같은 이름의 메서드라도, 실제 호출되는 것은 객체의 실제 타입에 따라 달라집니다.
  • 오버로딩 (Overloading) : 하나의 클래스 내에서 같은 이름의 메서드를 여러 개 정의하되, 매개변수의 개수나 타입을 다르게 하는 것입니다. 이를 통해 동일한 이름으로 다양한 기능을 수행할 수 있습니다.

🚗 예시: 운전

`운전하다()` 라는 동작은 동일하지만, 대상이 되는 자동차의 종류(스포츠카, 트럭, 버스)에 따라 실제 동작 방식은 달라집니다. 다형성은 이처럼 '운전하다'라는 하나의 행위로 다양한 실제 구현을 처리할 수 있게 해줍니다.

```java // 각 자동차는 '운전하다' 메서드를 다르게 구현 Car sportsCar = new SportsCar(); Car truck = new Truck();

// 운전자는 자동차의 종류를 몰라도 '운전하다'만 호출하면 됨 driver.drive(sportsCar); // 스포츠카가 운전됨 driver.drive(truck); // 트럭이 운전됨 ```


💡 개발자 핵심 Point

  • 다형성은 역할(인터페이스)과 구현(클래스)을 분리하는 객체 지향의 핵심 원리입니다.
  • 코드를 수정하지 않고도 새로운 기능을 쉽게 추가하고 확장할 수 있게 해줍니다.
  • 다형성을 잘 활용하면 느슨한 결합(Loose Coupling)높은 응집도(High Cohesion)를 가진 유연한 코드를 작성할 수 있습니다.
  • 프레임워크에서 의존성 주입(DI)을 통해 객체를 유연하게 교체하는 것도 다형성의 좋은 예입니다.