다형성(Polymorphism)
다형성(Polymorphism)은?
- 객체가 여러 형태를 가질 수 있는 능력
- 상속과 인터페이스를 활용하여 구현
- 유연성, 재사용성, 확장성을 제공
- 핵심 개념은 하나의 객체가 다양한 타입으로 식별될 수 있다는 것
다형성의 주요 특징
- 메소드 오버라이딩 (Method Overriding): 하위 클래스가 상위 클래스에서 정의된 메소드를 자신의 상황에 맞게 재정의하는 것입니다. 메소드 오버라이딩을 통해 같은 메소드 호출에 대해 서로 다른 클래스의 객체들이 각기 다른 행동을 할 수 있습니다.
- 하위 클래스 객체의 상위 클래스 타입 참조: 하위 클래스의 객체를 상위 클래스 타입으로 참조할 수 있습니다. 이를 통해 하나의 변수가 다양한 형태의 객체를 참조할 수 있게 되며, 코드의 유연성과 확장성이 증가합니다.
다형성 예시
class Animal {
public void sound() {
System.out.println("Some sound");
}
}
class Dog extends Animal {
public void sound() {
System.out.println("Bark");
}
}
class Cat extends Animal {
public void sound() {
System.out.println("Meow");
}
}
public class TestPolymorphism {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.sound(); // 출력: Bark
myCat.sound(); // 출력: Meow
}
}
다형성의 장점
- 코드 재사용성: 공통된 코드를 상위 클래스에 작성하고, 다양한 하위 클래스에서 이를 확장하여 사용할 수 있습니다.
- 유지보수 용이성: 공통 인터페이스를 통해 코드를 관리하기 때문에 유지보수가 용이합니다.
- 확장성: 새로운 클래스를 추가하거나 기존 클래스를 변경할 때 기존 코드에 미치는 영향을 최소화할 수 있습니다.
정리
다형성은 객체가 여러 형태를 가질 수 있는 능력을 의미하며, 이를 통해 하나의 인터페이스로 다양한 객체들의 구현이 가능하며, 프로그래밍의 유연성과 재사용성을 증가시킵니다.
참고
ChatGPT-4.0
보완/복습
- 2023.11.28 생성