🔍 내가 배운 내용 요약
📚 추상 클래스(Abstract Class)
항목 | 설명 |
---|---|
정의 | abstract 키워드로 선언한 클래스 |
객체 생성 | ❌ 직접 객체 생성 불가 |
메서드 | 일부 구현된 메서드 포함 가능 |
필드 | 멤버 변수 선언 가능 |
목적 | 기본 기능을 공통으로 제공하고, 구체 클래스가 추가 구현 |
상속 | extends 로 상속, 단일 상속만 가능 |
✅ 예시
Java
abstract class Animal {
String name;
// 일반 메서드
void eat() {
System.out.println("먹는다");
}
// 추상 메서드
abstract void sound();
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("멍멍");
}
}
📚 인터페이스(Interface)
항목 | 설명 |
---|---|
정의 | interface 키워드로 선언 |
객체 생성 | ❌ 직접 객체 생성 불가 |
메서드 | 전부 추상 메서드 (Java 8 이상: default/static 메서드 허용) |
필드 | 모두 public static final 상수만 가능 |
목적 | **기능 약속(규약)**만 정의, 구현은 클래스에서 |
구현 | implements 로 구현, 다중 구현 가능 ✔️ |
✅ 예시
Java
interface Speakable {
void speak(); // public abstract 생략 가능
}
class Cat implements Speakable {
@Override
public void speak() {
System.out.println("야옹");
}
}
📊 추상 클래스 vs 인터페이스 비교 정리
비교 항목 | 추상 클래스 | 인터페이스 |
---|---|---|
키워드 | abstract class |
interface |
다중 상속 | ❌ 단일 상속만 가능 | ✅ 다중 구현 가능 |
메서드 구현 | 일부 구현 O | (기본적으로) 전부 추상, Java 8+ 일부 구현 O |
필드 | 인스턴스 변수 선언 가능 | public static final 상수만 가능 |
목적 | 공통 기능 제공 + 확장성 | 기능 규약 정의 + 역할 명세 |
사용 관계 | extends |
implements |
상속 계층 | 추상 클래스 → 구체 클래스 | 인터페이스 → 구현 클래스 |