다형성: 두 판 사이의 차이
기술노트
(Gemini 벌크 업로더로 자동 업로드) |
(차이 없음)
|
2025년 9월 6일 (토) 05:05 기준 최신판
🎨 다형성 (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)을 통해 객체를 유연하게 교체하는 것도 다형성의 좋은 예입니다.