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

추상 클래스는 추상 메서드가 하나도 없어도 선언할 수 있다.