추상 메서드는 구체적인 구현을 연기하거나, 상속받는 클래스에서 반드시 특정 동작을 구현하도록 강제하고 싶을 때 사용됩니다. 이렇게 정의만 나열해서는 추상 메서드를 이해하기가 힘들기 때문에 코드와 함께 자세한 내용을 살펴보도록 하겠습니다.
앞으로 기술할 내용들을 빠르게 이해할 수 있도록 먼저 추상 메서드의 형식과 특징을 코드와 함께 간략하게 설명드리겠습니다.
// 추상 클래스 선언 abstract class Animal { // 추상 메서드 (구체적 구현 X) abstract void makeSound(); }
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(); // 출력: 먹습니다.
}
}