하나 이상의 추상 메소드를 포함하는 클래스를 추상 클래스라고 한다. 추상 클래스는 다형성을 가지는 메소드의 집합을 정의할 수 있도록 해준다.
반드시 사용되어야 하는 메소드를 추상 클래스에 추상 메소드로 선언 하면 이 클래스를 상속받는 모든 클래스에서는 이 추상 메소드를 반드시 재정의해야 한다.
abstract class 클래스이름 {
abstract 반환타입 메소드이름();
}
위와 같은 문법으로 추상 클래스를 선언한다.
abstract class Animal {
abstract void cry();
}
class Cat extends Animal {
void cry() {
System.out.println("냐옹");
}
}
class Dog extends Animal {
void cry() {
System.out.println("멍멍");
}
}
public class abstractStudy {
public static void main(String[] args) {
Cat cat = new Cat();
Dog dog = new Dog();
cat.cry();
dog.cry();
}
}
결과
Animal 클래스는 추상 메소드인 cry()를 가지고 있다.
Animal 클래스를 상속받는 Dag와 Cat 클래스는 cry()메소드를 오버라이딩해야만 인스턴스를 생성할 수 있다.