topic★★★★★난이도 · 약 15분
추상 클래스
`abstract` 키워드로 선언되며, 완성된 메서드와 미완성 메서드를 함께 가질 수 있다.
#Java#추상화
왜 배우는가
인터페이스와의 차이가 실기 단답형·서술형으로 매년 출제된다. '공통 구현은 주되, 일부는 자식이 반드시 구현하게 강제'할 때 쓴다.
java
abstract class Vehicle {
String name;
Vehicle(String name) { this.name = name; }
// 구현된 메서드 — 자식이 그대로 사용
void start() { System.out.println(name + " 시동"); }
// 추상 메서드 — 자식이 반드시 구현
abstract void drive();
}
class Car extends Vehicle {
Car(String name) { super(name); }
@Override
void drive() { System.out.println(name + " 달림"); }
}
// Vehicle v = new Vehicle("X"); // 컴파일 에러 — 추상 클래스는 인스턴스화 불가
Vehicle v = new Car("소나타");
v.start();
v.drive();핵심 규칙: 추상 메서드가 하나라도 있으면 클래스 자체도 abstract여야 한다. 그리고 추상 클래스는 `new`로 직접 만들 수 없다.
실기 드릴 1문항
check_circle실기 드릴 · OX
추상 클래스는 추상 메서드가 하나도 없어도 선언할 수 있다.