추상 메서드(Abstract Method)

SEPTEMBER·2024년 12월 29일

추상 메서드는 구체적인 구현을 연기하거나, 상속받는 클래스에서 반드시 특정 동작을 구현하도록 강제하고 싶을 때 사용됩니다. 이렇게 정의만 나열해서는 추상 메서드를 이해하기가 힘들기 때문에 코드와 함께 자세한 내용을 살펴보도록 하겠습니다.

형식과 특징

앞으로 기술할 내용들을 빠르게 이해할 수 있도록 먼저 추상 메서드의 형식과 특징을 코드와 함께 간략하게 설명드리겠습니다.

// 추상 클래스 선언
abstract class Animal {
    // 추상 메서드 (구체적 구현 X)
    abstract void makeSound();
}
  • 추상 메서드의 선언에는 abstract 키워드가 사용됩니다.
  • 메서드 선언부만 존재하고 본문(구현부)은 없습니다.
  • 추상 메서드는 추상 클래스 내에서만 선언할 수 있습니다.
  • 추상 메서드를 포함한 클래스는 반드시 추상 클래스여야 합니다.
    (참고) 추상 클래스는 인스턴스를 직접 생성할 수 없으며, 자식 클래스에서 상속받아 사용해야 합니다.

주요 목적

1. 코드의 재사용성 향상

  • 공통된 로직은 추상 클래스에서 정의하고, 각 클래스마다 고유한 동작은 추상 메서드로 강제하여 구현합니다.

2. 유지보수성 향상

  • 상위 클래스에서 구조를 명확히 정의하여, 하위 클래스가 의도에 맞게 구현되도록 유도합니다.

3. 다형성 지원

  • 추상 메서드는 부모 타입(추상 클래스) 변수로 자식 객체를 참조하여 다형성을 활용하는 데 유용합니다.

사용 예시

// 추상 클래스 선언
abstract class Animal {
    // 추상 메서드 (구체적 구현 X)
    abstract void makeSound();

    // 일반 메서드
    void eat() {
        System.out.println("먹습니다.");
    }
}

// 추상 클래스를 상속받는 구체 클래스
class Dog extends Animal {
    // 추상 메서드 구현
    @Override
    void makeSound() {
        System.out.println("멍멍");
    }
}

class Cat extends Animal {
    // 추상 메서드 구현
    @Override
    void makeSound() {
        System.out.println("야옹");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.makeSound(); // 출력: 멍멍
        dog.eat();       // 출력: 먹습니다.

        Animal cat = new Cat();
        cat.makeSound(); // 출력: 야옹
        cat.eat();       // 출력: 먹습니다.
    }
}

0개의 댓글