다형성(Polymorphism)은?

  • 객체가 여러 형태를 가질 수 있는 능력
  • 상속과 인터페이스를 활용하여 구현
  • 유연성, 재사용성, 확장성을 제공
  • 핵심 개념은 하나의 객체가 다양한 타입으로 식별될 수 있다는 것

다형성의 주요 특징

  1. 메소드 오버라이딩 (Method Overriding): 하위 클래스가 상위 클래스에서 정의된 메소드를 자신의 상황에 맞게 재정의하는 것입니다. 메소드 오버라이딩을 통해 같은 메소드 호출에 대해 서로 다른 클래스의 객체들이 각기 다른 행동을 할 수 있습니다.
  2. 하위 클래스 객체의 상위 클래스 타입 참조: 하위 클래스의 객체를 상위 클래스 타입으로 참조할 수 있습니다. 이를 통해 하나의 변수가 다양한 형태의 객체를 참조할 수 있게 되며, 코드의 유연성과 확장성이 증가합니다.

다형성 예시

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 생성