[java] 제네릭을 사용한 다형성(Polymorphism)

다형성(Polymorphism)은 객체지향 프로그래밍에서 중요한 개념 중 하나입니다. 다형성이란 같은 메소드 호출이 서로 다른 객체에 대해 다른 동작을 할 수 있는 능력을 의미합니다. Java에서는 제네릭(Generics)을 사용하여 다형성을 구현할 수 있습니다.

다형성을 이용하면 코드를 보다 유연하고 확장가능하게 작성할 수 있습니다. 객체의 타입을 명시하지 않고 다양한 타입의 객체를 다룰 수 있으며, 재사용성이 높아집니다.

제네릭을 사용한 다형성 예제

제네릭을 사용하여 다형성을 구현하는 간단한 Java 예제를 살펴보겠습니다.

// 제네릭 클래스를 정의
class Box<T> {
    private T t;

    public void set(T t) {
        this.t = t;
    }

    public T get() {
        return t;
    }
}

// 다형성을 활용하는 예제
public class Main {
    public static void main(String[] args) {
        // 다양한 타입을 다룰 수 있는 Box 객체 생성
        Box<String> stringBox = new Box<>();
        Box<Integer> integerBox = new Box<>();

        // 다형성을 이용하여 다양한 타입의 객체를 설정하고 반환
        stringBox.set("Hello, World!");
        integerBox.set(123);

        System.out.println(stringBox.get());  // "Hello, World!" 출력
        System.out.println(integerBox.get()); // 123 출력
    }
}

위 예제에서 Box 클래스는 제네릭을 사용하여 다형성을 구현합니다. Box 클래스는 어떤 타입의 객체도 다룰 수 있도록 만들어졌으며, Main 클래스에서는 이를 이용하여 String과 Integer 타입의 객체를 다루는 예제를 보여줍니다.

제네릭을 사용하면 컴파일 시점에서 타입 안전성을 보장받을 수 있으며, 불필요한 형변환을 방지할 수 있습니다. 이로써 코드의 안정성과 가독성이 향상됩니다.

제네릭을 활용하여 다형성을 구현함으로써 코드의 유연성을 높일 수 있습니다. 이를 통해 객체지향 프로그래밍의 장점을 최대한 활용할 수 있습니다.

참고 자료