다형성(Polymorphism)

다형성이란 프로그램 언어 각 요소들(상수, 변수, 식, 객체 메소드 등)이 다양한 자료형에 속하는 것이 허가되는 성질

또는, 하나의 타입에 여러 객체를 대입할 수 있는 성질

결국 왜하냐? 코드의 중복을 줄이면서 변경과 확장에 유연한 객체지향적인 코드를 생산하기 위함

다형성을 구현하는 방법

오버로딩(Overloading)

  • 매개변수(parameter)만 다른 이름이 같은 메소드가 정의 되어있을 때, 인자 값에 따라 호출되는 메소드가 다르게 하는 것
  • 여러 종류의 타입을 받아들여 결국엔 같은 기능을 하도록 만들기 위한 작업
  • 메소드를 동적으로 호출 가능
  • 요구사항이 변경되었을 때 모든 메소드에서 수정이 일어날 수 있음

오버라이딩(Overriding)

  • 상위 클래스의 메소드를 하위 클래스에서 재정의 하는 것
  • 상위 클래스의 메소드를 같은 이름, 같은 반환 값, 같은 인자로 메소드 내의 로직들을 새롭게 정의 하는 것

참고 자료