객체지향 프로그래밍의 속성 중 하나인 다형성과 이를 활용한 설계의 장점에 대해 설명해주세요.
한 줄 요약
다형성 : 동일한 함수 호출에 대해 세부 정의된 내용에 따라 다르게 작동하도록 하는 구조. 인터페이스나 추상 클래스 등을 통해 선언된 함수를 자식 클래스에서 구현하여 다르게 작동하도록 구현. 조건문을 사용하지 않고 상황에 따른 기능을 구분해서 실행할 수 있는 점이 장점
다형성
- 다형성이란 동일한 호출에 대해 각각의 타입에 따라서 다르게 작동하는 구조를 말함.
- 이는 주로 클래스나 인터페이스의 상속을 통해 구현됨
- 부모 클래스에서
abstract, virtual로 정의된 메서드를 override하여 현재 클래스에 맞게 구현하여 다형성을 가지는 프로그램 설계가 가능하다.
- 인터페이스에서는 메서드의 본문이 없고, 이를 상속받는 클래스에서 해당 메서드를 반드시 구현하도록 한다. 따라서 인터페이스를 통해 접근해 해당 메서드를 실행하면 상속된 클래스에서 구현한 메서드가 실행되므로 다형성을 가지게 된다.
장점
- 각각의 클래스가 아닌 부모나 인터페이스를 참조하여 함수를 실행하므로, 다양한 하위 클래스가 추가되어도 기능에 수정할 부분이 줄어듬 (OCP 원칙을 지키는 설계)
- 또한 실행시에 객체의 타입에 따라 조건문으로 구분하여 실행하는 것이 아니므로 간편하게 기능을 구현할 수 있음