반응형
💡Interface
- 추상 메서드만 포함: 인터페이스는 추상 메서드의 집합으로 이루어져 있습니다. 추상 메서드는 구현 내용이 없고 메서드 시그니처만 정의됩니다. 클래스가 인터페이스를 구현하면 해당 클래스는 인터페이스에 정의된 모든 메서드를 구현해야 합니다.
- 다중 상속 지원: Java에서 클래스는 단일 상속만 허용되지만, 여러 인터페이스를 구현할 수 있습니다. 이로 인해 다중 상속의 일부 장점을 활용할 수 있습니다.
- 구현을 강제함: 클래스가 인터페이스를 구현하면 그 인터페이스에 정의된 모든 메서드를 반드시 구현해야 합니다. 이를 통해 특정한 동작을 보장하고, 코드의 일관성을 유지합니다.
- 인스턴스 생성 불가: 인터페이스는 객체를 직접 생성할 수 없습니다. 따라서 인터페이스를 구현한 클래스의 인스턴스를 생성하여 사용합니다.
- 인터페이스 상속: 인터페이스는 다른 인터페이스를 상속받을 수 있습니다. 이를 통해 인터페이스 간의 계층 구조를 형성할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
|
interface Drawable {
void draw();
}
class Circle implements Drawable {
@Override
public void draw() {
// 구현
}
}
|
cs |
💡 추상 클래스 (Abstract Class)
- 일반 메서드 포함 가능: 추상 클래스는 추상 메서드 외에도 일반 메서드를 포함할 수 있습니다. 이러한 일반 메서드는 구현 내용이 있어도 되며 하위 클래스에서 오버라이딩할 수도 있습니다.
- 단일 상속 지원: Java에서 클래스는 단일 상속만 허용됩니다. 따라서 추상 클래스는 하나의 클래스만 상속할 수 있습니다.
- 구현을 선택적으로 함: 추상 클래스는 추상 메서드를 가질 수 있지만 모든 메서드가 추상일 필요는 없습니다. 하위 클래스에서 추상 메서드를 구현하는 것은 선택적입니다.
- 인스턴스 생성 불가: 추상 클래스는 직접 인스턴스화할 수 없습니다. 하위 클래스에서 상속된 메서드를 통해 인스턴스를 생성해야 합니다.
- 추상 클래스 상속: 다른 추상 클래스나 일반 클래스를 상속받을 수 있습니다. 이를 통해 클래스 간의 계층 구조를 형성할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
abstract class Shape {
int x, y;
abstract void draw(); // 추상 메서드
void move() {
// 구현
}
}
class Circle extends Shape {
@Override
void draw() {
// 구현
}
}
|
cs |
💻결론
인터페이스 - 다중 상속을 지원하고, 클래스 간의 관련성이 없는 다양한 클래스가 특정 동작을 공유할 때 유용합니다.
추상 클래스 - 공통된 기능을 가지는 클래스들 사이에 상속 관계가 있을 때 유용하며, 추상 메서드와 일반 메서드를 함께 사용하여 일반적인 구현을 제공할 때 유용합니다.
반응형
'프로그래밍 > Java' 카테고리의 다른 글
[Java] Call by Reference와 Call by Value의 차이 (0) | 2023.10.12 |
---|---|
[Java] CheckedException과 UncheckedException의 차이 (1) | 2023.10.11 |
[Java] 클래스, 객체, 인스턴스의 차이 (2) | 2023.10.10 |
[Java] JVM의 구조 (0) | 2023.10.05 |
[Java] OOP의 5대원칙(SOLID) (0) | 2023.10.04 |