추상 메서드란?
추상메서드는 선언만 하고 구현은 없는 메서드
즉, (부모)추상 메서드는 구조만 가지고 있고, (자식)클래스가 물려받은 구조를 디테일적으로 추가해줘야됨
abstract class Animal {
abstract void makeSound(); // 추상 메서드 선언
}
class Dog extends Animal {
void makeSound() {
System.out.println("Bark!"); // 추상 메서드 구현
}
}
상위 클래스에서 추상메서드를 선언하고 하위클래스에서 각자 구체적인 동작을 구현 가능
추상클래스를 상속받은 다양한 하위 클래스들이 각자의 방식으로 추상메서드들을 구현함으로써, 동일한 메서드 호출에도 다향한 구현이 될 수 있음
코드의 재사용성을 높일 수 있음
주의해야할 점!
추상 메서드 포함 :추상 메서드를 하나라도 가지면 추상 클래스가 됨
오버라이딩 필수 : 추상 클래스를 상속받은 모든 구체적인 클래스는 추상 클래스의 추상 메서드를 구현해야 객체 생성가능
직접 인스턴스화 불가 :추상 클래스는 직접적으로 인스턴스화 불가능, ex) new AbstractClass()