[java] 자바 추상 클래스와 인터페이스의 사용 예시

자바에서 추상 클래스와 인터페이스는 다형성과 코드 재사용을 위해 사용됩니다. 추상 클래스와 인터페이스는 공통된 특징과 동작을 가진 클래스들을 그룹화하고, 이를 기반으로 구체적인 클래스를 구현할 때 사용됩니다. 이제 추상 클래스와 인터페이스의 사용 예시를 살펴보겠습니다.

추상 클래스의 사용 예시

public abstract class Shape {
    protected String color;
    
    public Shape(String color) {
        this.color = color;
    }
    
    public abstract double getArea();
    
    public void printColor() {
        System.out.println("도형의 색상은 " + color + "입니다.");
    }
}

위의 코드 예시는 추상 클래스인 Shape를 정의하는 부분입니다. Shape 클래스는 color 멤버 변수와 추상 메서드 getArea()를 가지고 있습니다. getArea() 메서드는 구체적인 도형 클래스에서 오버라이딩하여 구현해야 합니다. 또한, printColor() 메서드는 모든 도형 클래스에서 공통으로 사용될 수 있는 메서드입니다.

public class Circle extends Shape {
    private double radius;
    
    public Circle(String color, double radius) {
        super(color);
        this.radius = radius;
    }
    
    @Override
    public double getArea() {
        return Math.PI * radius * radius;
    }
}

위의 코드 예시는 추상 클래스 Shape를 상속받은 Circle 클래스를 정의하는 부분입니다. Circle 클래스는 반지름(radius)을 멤버 변수로 가지고 있으며, getArea() 메서드를 오버라이딩하여 구현합니다.

이와 같이 추상 클래스를 이용하여 공통된 속성과 동작을 가진 클래스들을 그룹화하고, 구체적인 클래스에서 필요한 부분만 구현할 수 있습니다.

인터페이스의 사용 예시

public interface Drawable {
    void draw();
    void setColor(String color);
}

public class Square implements Drawable {
    private String color;
    
    @Override
    public void draw() {
        System.out.println("사각형을 그립니다.");
    }
    
    @Override
    public void setColor(String color) {
        this.color = color;
    }
}

위의 코드 예시는 인터페이스 Drawable을 정의하는 부분입니다. Drawable 인터페이스는 draw()setColor(String color) 메서드를 가지고 있습니다.

Square 클래스는 Drawable 인터페이스를 구현하여 사각형을 그리는 동작을 구현합니다. 이때, draw()setColor(String color) 메서드를 반드시 오버라이딩하여 구현해야 합니다.

인터페이스를 이용하여 다른 클래스들이 동일한 동작을 수행할 수 있도록 하고, 각 클래스에서 필요한 기능을 구현할 수 있습니다.

정리

자바에서 추상 클래스와 인터페이스는 다형성과 코드 재사용을 위해 사용됩니다. 추상 클래스는 공통된 특징과 동작을 가진 클래스들을 그룹화하고, 인터페이스는 클래스들이 동일한 동작을 할 수 있도록 정의합니다. 추상 클래스와 인터페이스를 적절히 사용하여 유연하고 확장 가능한 코드를 작성할 수 있습니다.

추가 참고 자료: Oracle 자바 문서