/ EXITEM, 정처기

다형성

다형성 (Polymorphism)

객체지향 프로그래밍에서 중요한 개념 중 하나로, 같은 인터페이스나 추상 클래스를 상속한 여러 클래스가 각자의 방식으로 그 인터페이스나 추상 클래스의 메서드를 구형하고 사용할 수 있는 능력을 말합니다.

즉, 다형성은 같은 타입 또는 인터페이스를 구현한 객체가 다른 방식으로 동작할 수 있다는 것을 의미합니다.

이를 통해 다른 객체를 동일한 방식으로 다룰 수 있어 유지보수와 확장성이 좋아지며, 코드의 재사용성이 높아집니다.

예를 들어

  • 자동차 인터페이스를 구현한 여러 자동차 객체가 있다고 가정합니다.
  • 자동차 객체는 각자의 방식으로 구현될 수 있으며, 각각의 객체를 특정 메서드를 사용하여 제어할 수 있습니다.
  • 이때, 자동차 인터페이스를 구현한 객체들은 같은 메서드를 사용하여 제어할 수 있지만, 각각의 객체는 내부적으로 다른 동작을 수행합니다.
  • 이렇게 자동차 인터페이스를 구현한 객체들이 각자의 방식으로 동작할 수 있는 것이 다형성입니다.

다형성은 오버라이딩, 오버로딩 두 가지 형태로 나눌 수 있습니다.

오버라이딩(Overriding)

  • 오버라이딩은 부모 클래스에 정의된 메서드자식 클래스에서 재정의하여 사용하는 것을 말합니다.
  • 오버라이딩 된 메서드는 상위 클래스의 메서드 시그니처와 동일해야 합니다.
  • 오버라이딩을 사용하면, 하위 클래스에서 상위 클래스의 메서드를 그대로 사용하거나 일부분을 수정하여 사용할 수 있습니다.
  • 오버라이딩은 다형성의 구현에 가장 중요한 요소 중 하나입니다.

메서드 시그니처 : 메서드의 이름과 매개변수

오버로딩(Overloading)

  • 오버로딩은 같은 이름의 메서드를 여러 개 정의하고, 인자의 개수나 타입에 따라 다른 동작을 수행하도록 하는 것을 말합니다.
  • 컴파일러는 오버로딩된 메서드 중에서 호출할 메서드를 선택할 때, 메서드 호출 시 전달하는 인자의 개수, 타입, 순서 등을 기반으로 선택합니다.
  • 메서드의 이름을 재활용하여 코드의 가독성을 높이고, 코드의 재사용성을 높이는 데에 도움을 줍니다.