상세 컨텐츠

본문 제목

[자바 CS지식] 추상클래스와 인터페이스의 차이

JAVA

by 소란한소란 2024. 2. 12. 16:09

본문

728x90

1. 추상클래스 (Abstract Class)

  • 선언과 구현: 추상클래스는 일반적인 클래스와 같이 일부 메서드는 구현된 상태로 가질 수 있습니다. 즉, 추상 메서드(abstract method)와 일반 메서드를 함께 가질 수 있습니다.
  • 생성자: 추상클래스는 생성자를 가질 수 있습니다. 객체를 초기화하는 데 사용될 수 있습니다.
  • 다중 상속: Java에서는 단일 상속만 허용되므로 추상클래스는 여러 클래스로부터 상속받을 수 없습니다.

예제 코드를 봅시다.

abstract class Shape {
    int x, y;

    Shape(int x, int y) {
        this.x = x;
        this.y = y;
    }

    abstract void draw(); // 추상 메서드
}

class Circle extends Shape {
    int radius;

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

    void draw() {
        System.out.println("원을 그립니다.");
    }
}

 


 

2. 인터페이스 (Interface)

  • 선언만: 인터페이스는 모든 메서드가 추상 메서드로 선언되어 있으며, 구현이 없습니다. Java 8 이후부터는 default 메서드와 static 메서드를 가질 수 있게 되었지만, 그 외의 메서드는 모두 추상이어야 합니다.
  • 생성자: 인터페이스는 생성자를 가질 수 없습니다. 객체를 초기화하는 데 사용할 수 있는 생성자가 없습니다.
  • 다중 상속: 인터페이스는 다중 상속을 지원합니다. 여러 인터페이스를 구현할 수 있습니다.

예제 코드를 봅시다.

interface Drawable {
    void draw(); // 추상 메서드
}

class Circle implements Drawable {
    int x, y, radius;

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

    public void draw() {
        System.out.println("원을 그립니다.");
    }
}

 


결론

추상클래스는 클래스와 유사하게 상태와 메서드를 가질 수 있고, 일부 메서드는 구현된 상태로 제공됩니다. 반면에 인터페이스는 메서드 선언만을 제공하며, 다중 상속이 가능합니다. 추상클래스는 공통된 코드를 추출하여 재사용하고자 할 때 사용하며, 인터페이스는 다양한 객체들이 특정 동작을 공유할 수 있도록 할 때 사용합니다. 선택은 사용하려는 목적과 상황에 따라 달라집니다.

 

728x90

관련글 더보기