[Java] Java 다형성 (Polymorphism) #13

소개

자바 (Java) 언어는 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)의 핵심 원칙 중 하나인 다형성을 지원합니다. Java 다형성은 코드의 재사용성을 높이고 유연성을 부여하여 프로그램을 더 효율적으로 작성할 수 있도록 돕는 중요한 개념입니다. 이 블로그에서는 자바의 다형성에 대해 상세히 알아보겠습니다.

다형성의 개념

다형성이란?

다형성은 한 가지 개념을 여러 형태로 표현할 수 있는 능력을 의미합니다. 자바에서 다형성은 다양한 형태의 객체를 동일한 타입으로 다룰 수 있도록 해주는 기능을 말합니다. 이것은 상속과 인터페이스를 기반으로 구현됩니다.

다형성의 장점

  1. 코드 재사용성: 다형성을 통해 공통적인 동작을 하는 코드를 한 번 작성하고, 다양한 객체에서 재사용할 수 있습니다.
  2. 유연성: 새로운 클래스를 추가하거나 수정할 때, 기존 코드의 변경이 최소화되어 유지보수가 용이해집니다.
  3. 확장성: 프로그램이 변화에 적응하기 쉽도록 해주어 애플리케이션을 더 쉽게 확장할 수 있게 합니다.
[Java] Java 다형성 (Polymorphism) #13

다형성의 구현

1. 메서드 오버로딩 (Method Overloading)

메서드 오버로딩은 동일한 메서드 이름을 가지지만 매개변수의 타입, 개수, 순서 등이 다른 여러 메서드를 정의하는 것입니다. 이를 통해 다양한 형태의 입력을 받을 수 있습니다.

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }
}

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

메서드 오버라이딩은 부모 클래스에서 정의된 메서드를 자식 클래스에서 동일한 시그니처로 재정의하는 것입니다. 이는 다양한 하위 클래스에서 동일한 메서드 호출을 가능하게 합니다.

public class Shape {
    public void draw() {
        System.out.println("도형을 그립니다.");
    }
}

public class Circle extends Shape {
    @Override
    public void draw() {
        System.out.println("원을 그립니다.");
    }
}

3. 인터페이스 (Interfaces)

인터페이스는 다형성을 지원하는 강력한 도구 중 하나입니다. 여러 클래스가 동일한 인터페이스를 구현함으로써 다양한 객체를 동일한 타입으로 관리할 수 있습니다.

public interface Movable {
    void move();
}

public class Car implements Movable {
    @Override
    public void move() {
        System.out.println("자동차가 이동합니다.");
    }
}

public class Bicycle implements Movable {
    @Override
    public void move() {
        System.out.println("자전거가 이동합니다.");
    }
}

다형성의 활용

다형성을 활용한 예시

다형성은 실제 프로그래밍에서 어떻게 활용될 수 있는지 알아봅시다. 예를 들어, 다양한 도형을 그리는 프로그램을 작성한다고 가정해 봅시다.

public class DrawingProgram {
    public void drawShape(Shape shape) {
        shape.draw();
    }
}

public class Main {
    public static void main(String[] args) {
        DrawingProgram drawingProgram = new DrawingProgram();

        Shape circle = new Circle();
        Shape square = new Square();

        drawingProgram.drawShape(circle);
        drawingProgram.drawShape(square);
    }
}

위 예시에서 DrawingProgram 클래스는 Shape를 인자로 받아 해당 도형을 그리는 기능을 수행합니다. 이를 통해 다형성을 활용하여 서로 다른 도형을 동일한 메서드로 다룰 수 있습니다.

마무리 Java 다형성

자바의 다형성은 객체 지향 프로그래밍의 핵심 원칙 중 하나로, 코드의 재사용성과 유연성을 높여줍니다. 메서드 오버로딩, 메서드 오버라이딩, 인터페이스를 통해 구현되며, 이를 통해 프로그램의 확장성을 향상시킬 수 있습니다. 다형성은 프로그램을 더 강력하고 효율적으로 만드는데 중요한 역할을 합니다. 프로그래머들은 이러한 다형성의 개념을 잘 이해하고 적절히 활용하여 보다 효과적인 코드를 작성할 수 있습니다.

[Java] Java 상속 (Inheritance)에 대한 이해 #12
[Java] Java 상속 (Inheritance)에 대한 이해 #12
[Java] Java 추상 클래스 (Abstract Class) #14
[Java] Java 추상 클래스 (Abstract Class) #14

Leave a Comment