Post

java11, 인터페이스

Java 주요 문법.

인터페이스(interface) vs 추상클래스 (Abstract class)

이전 포스팅에서 다뤘었던 인터페이스와 추상클래스.
사뭇 비슷해보이는 두가지 문법의 차이점을 정리해보겠습니다.

인터페이스? 추상클래스?

사실 눈에 보이는 차이점은 꽤 있긴 합니다.
먼저 사용 문법 부터가 다르죠.

1
2
3
interface Drawable {
    void draw();
}

인터페이스는 위와 같이 선언을 하고,
추상클래스는 일반 클래스와 동일하게 선언하지만, ‘bstract’ 단어를 추가합니다.

추상 클래스는 일부 메서드의 구현을 제공하면서, 추상 메서드를 포함할 수 있는 클래스입니다.
추상 클래스는 abstract 키워드를 사용하여 정의하며, extends 키워드를 사용하여 상속합니다.
특징으로는 아래와 같이 설명할 수 있습니다.

  1. 단일 상속 지원: 자바에서는 클래스는 하나의 추상 클래스만 상속할 수 있습니다.
  2. 구현 및 추상 메서드 혼합: 추상 클래스는 구현된 메서드와 추상 메서드를 모두 포함할 수 있습니다.
  3. 일반 필드 및 메서드 정의 가능: 추상 클래스는 일반 필드, 메서드, 생성자를 포함할 수 있습니다.

사용 예시를 보여드리겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public abstract class Shape {
    private String color;

    public Shape(String color) {
        this.color = color;
    }

    public String getColor() {
        return color;
    }

    // 추상 메서드
    public abstract double area();
}

public class Circle extends Shape {
    private double radius;

    public Circle(String color, double radius) {
        super(color);
        this.radius = radius;
    }

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

차이점 요약

정의: 인터페이스는 메서드 시그니처만을 정의하는 타입, 추상 클래스는 일부 메서드의 구현을 포함할 수 있는 클래스입니다.
상속: 인터페이스는 다중 상속을 지원하며, 추상 클래스는 단일 상속만을 지원합니다.
구현 및 상속: 인터페이스는 implements로 구현하고, 추상 클래스는 extends로 상속합니다.
멤버: 인터페이스는 상수와 추상 메서드만을 포함할 수 있으며, 추상 클래스는 일반 필드, 메서드, 생성자를 포함할 수 있습니다.
두 개념은 프로젝트의 요구 사항에 따라 선택하여 사용해야 합니다. 인터페이스는 객체의 행동을 명시하고, 추상 클래스는 객체의 공통된 기능을 구현할 때 주로 사용됩니다.

This post is licensed under CC BY 4.0 by the author.