[java] 자바 추상 클래스와 인터페이스를 통한 코드 재사용 방법

코드 재사용은 소프트웨어 개발에서 매우 중요한 요소입니다. 자바에서는 추상 클래스와 인터페이스를 통해 코드 재사용을 가능하게 합니다. 이번 포스트에서는 자바 추상 클래스와 인터페이스를 사용하여 코드를 재사용하는 방법에 대해 알아보겠습니다.

추상 클래스

추상 클래스는 하나 이상의 추상 메서드를 포함하는 클래스입니다. 추상 메서드는 구현이 없는 메서드로, 하위 클래스에서 반드시 구현되어야 합니다. 추상 클래스는 직접 인스턴스화할 수 없습니다. 대신, 추상 클래스를 상속받은 하위 클래스를 통해 객체를 생성할 수 있습니다.

다음은 추상 클래스의 예입니다.

public abstract class Shape {
    public abstract double calculateArea();
    public abstract double calculatePerimeter();
}

public class Circle extends Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;
    }

    @Override
    public double calculatePerimeter() {
        return 2 * Math.PI * radius;
    }
}

public class Rectangle extends Shape {
    private double width;
    private double height;

    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    @Override
    public double calculateArea() {
        return width * height;
    }

    @Override
    public double calculatePerimeter() {
        return 2 * (width + height);
    }
}

위의 코드에서 Shape 추상 클래스는 모든 도형의 추상적인 개념을 나타냅니다. Circle 클래스와 Rectangle 클래스는 Shape 클래스를 상속받아 추상 메서드를 구현합니다. 이렇게 함으로써 CircleRectangle 객체를 생성하고 사용할 수 있습니다.

인터페이스

인터페이스는 추상 메서드와 상수만을 가지며, 다른 클래스들이 해당 인터페이스를 구현하도록 하는 역할을 합니다. 인터페이스를 사용하여 자바에서 다중 상속을 구현할 수 있습니다. 인터페이스를 구현하는 클래스는 인터페이스에 정의된 모든 메서드를 구현해야 합니다.

다음은 인터페이스의 예입니다.

public interface Movable {
    void move();
}

public interface Drawable {
    void draw();
}

public class Circle implements Movable, Drawable {
    private int x;
    private int y;
    private int radius;

    public Circle(int x, int y, int radius) {
        this.x = x;
        this.y = y;
        this.radius = radius;
    }

    @Override
    public void move() {
        // 도형을 이동하는 코드 구현
    }

    @Override
    public void draw() {
        // 도형을 그리는 코드 구현
    }
}

위의 코드에서 MovableDrawable 인터페이스는 각각 이동과 그리기 동작을 나타냅니다. Circle 클래스는 두 인터페이스를 구현하며, move()draw() 메서드를 구현합니다.

결론

자바에서는 추상 클래스와 인터페이스를 사용하여 코드를 재사용할 수 있습니다. 추상 클래스는 하위 클래스에서 추상 메서드를 구현함으로써 코드의 일관성을 유지하고 재사용성을 높일 수 있습니다. 인터페이스는 다중 상속을 구현하며, 다른 클래스들이 특정 동작을 구현하도록 강제할 수 있습니다. 이러한 기능들을 효율적으로 사용하여 코드의 생산성을 높이고 유지보수를 용이하게 할 수 있습니다.

참고 자료