JAVA/포스팅

자바 다형성 (Polymorphism)

짜집퍼박사(짜박) 2023. 11. 5. 11:24

자바에서 다형성(Polymorphism)은 객체 지향 프로그래밍(OOP)의 핵심 원리 중 하나로, 같은 인터페이스 또는 기본 클래스를 공유하는 여러 객체들이 다양한 방식으로 작동할 수 있는 능력을 나타냅니다. 다형성은 코드의 유연성과 재사용성을 증가시키며, 객체 지향 프로그래밍의 주요 이점 중 하나입니다. 다형성의 주요 개념 및 원리를 살펴봅니다.

 

1. 업캐스팅 (Upcasting)

업캐스팅은 자식 클래스의 인스턴스를 부모 클래스의 참조 변수에 할당하는 것을 의미합니다. 부모 클래스의 참조 변수를 사용하여 자식 클래스의 객체를 참조할 수 있습니다.

Parent parent = new Child(); // 업캐스팅

 

2. 동적 메서드 바인딩 (Dynamic Method Binding)

다형성의 핵심은 메서드 호출 시 어떤 객체의 메서드가 호출될지를 런타임에 결정하는 것입니다. 이것을 동적 메서드 바인딩이라고 합니다.

Parent parent = new Child(); // 업캐스팅
parent.someMethod(); // Child 클래스의 someMethod가 호출됨 (동적 메서드 바인딩)

 

3. 메서드 오버라이딩 (Method Overriding)

다형성을 활용하기 위해서는 자식 클래스에서 부모 클래스의 메서드를 오버라이딩해야 합니다. 오버라이딩된 메서드는 자식 클래스의 객체에서 호출됩니다.

class Parent {
    public void someMethod() {
        System.out.println("Parent's method");
    }
}

class Child extends Parent {
    @Override
    public void someMethod() {
        System.out.println("Child's method");
    }
}

 

4. 인터페이스와 추상 클래스 활용

인터페이스와 추상 클래스를 사용하여 다형성을 더욱 강화할 수 있습니다. 다수의 클래스가 동일한 인터페이스를 구현하거나 추상 클래스를 확장함으로써, 유사한 동작을 수행하는 객체 간에 균일한 인터페이스를 유지할 수 있습니다.

interface Shape {
    void draw();
}

class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a circle");
    }
}

class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a rectangle");
    }
}

 

5. 다형성의 이점

다형성은 코드의 유연성과 확장성을 증가시킵니다. 예를 들어, 다형성을 활용하면 배열이나 컬렉션과 같은 데이터 구조에 다양한 객체를 저장하고, 동일한 인터페이스를 사용하여 객체를 처리할 수 있습니다. 또한 코드를 보다 모듈화하고 유지 보수하기 쉽게 만들며, 새로운 클래스를 도입하거나 기존 클래스를 확장할 때 코드 변경을 최소화합니다.

다형성은 객체 지향 프로그래밍의 중요한 개념 중 하나로, 코드의 재사용성과 유연성을 향상시키는데 도움을 줍니다. 객체 간의 관계를 추상화하고 공통된 인터페이스를 정의함으로써 다양한 객체가 함께 동작할 수 있도록 합니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 인터페이스 (Interface)  (0) 2023.11.05
자바 추상화 (Abstraction)  (0) 2023.11.05
자바 상속 (Inheritance)  (0) 2023.11.05
자바 캡슐화 (Encapsulation)  (0) 2023.11.05
자바 클래스와 객체  (0) 2023.11.05