[객체 지향] 다형성

ltwes·2023년 2월 24일
0

'poloymor-phism'이라는 단어로 그리스어로 '많은 형태'를 의미한다.

다형성은 때에 따라 객체가 다르게 동작할 수 있습니다.
크게 2가지로 나눌 수 있습니다.
두 가지는 컴파일 타임 다형성인 메서드 오버로딩(overloading)과 런타임 다형성인 메서드 오버라이딩입니다.

컴파일 타임 다형성 - 메서드 오버로딩

동일한 메서드명을 가지고 있지만 매개변수가 다른 경우(매개변수의 개수, 타입, 순서) 컴파일러가 오버로드된 메서드 가운데 어떤 형식을 호출할 것인지 컴파일 단계에서 식별합니다.

런타임 다형성 - 메서드 오버라이딩

상위 클래스에서 정의된 메서드를 하위 클래스에서 재정의하여
타입에 대한 혼란 없이 부모 클래스와 똑같이 사용할 수 있게 해줍니다.

장점

다형성은 코드의 재사용성을 높이고, 유지보수를 용이하게 해줍니다.
특히 추상화(abstraction)와 함께 사용하면, 코드의 유연성과 확장성을 높일 수 있습니다.

논쟁

컴파일러 타임 다형성은 다형성이 아니라는 주장도 있습니다.
실행 시간에 객체의 실제 타입에 따라서 다르게 동작하는 런타임 다형성과 다르게 정적으로 이루어지기 때문입니다.

profile
Simple is the best

0개의 댓글