java11, 인터페이스
Java 주요 문법.
인터페이스(interface) vs 추상클래스 (Abstract class)
이전 포스팅에서 다뤘었던 인터페이스와 추상클래스.
사뭇 비슷해보이는 두가지 문법의 차이점을 정리해보겠습니다.
인터페이스? 추상클래스?
사실 눈에 보이는 차이점은 꽤 있긴 합니다.
먼저 사용 문법 부터가 다르죠.
1
2
3
interface Drawable {
void draw();
}
인터페이스는 위와 같이 선언을 하고,
추상클래스는 일반 클래스와 동일하게 선언하지만, ‘bstract’ 단어를 추가합니다.
추상 클래스는 일부 메서드의 구현을 제공하면서, 추상 메서드를 포함할 수 있는 클래스입니다.
추상 클래스는 abstract
키워드를 사용하여 정의하며, extends 키워드를 사용하여 상속합니다.
특징으로는 아래와 같이 설명할 수 있습니다.
- 단일 상속 지원: 자바에서는 클래스는 하나의 추상 클래스만 상속할 수 있습니다.
- 구현 및 추상 메서드 혼합: 추상 클래스는 구현된 메서드와 추상 메서드를 모두 포함할 수 있습니다.
- 일반 필드 및 메서드 정의 가능: 추상 클래스는 일반 필드, 메서드, 생성자를 포함할 수 있습니다.
사용 예시를 보여드리겠습니다.
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.