추상 메소드는 선언만 있고 구현 내용이 없는 메소드를 의미한다. 이러한 메소드는 자식 클래스에서 반드시 오버라이딩(재정의)되어야 한다.
abstract void print();
위의 예시에서 print() 메소드는 추상 메소드로 선언되어 있다. 이 메소드는 구현 내용이 없으며, 자식 클래스에서 반드시 구현되어야 한다.
추상 클래스는 하나 이상의 추상 메소드를 포함하는 클래스이다. 추상 클래스는 추상 메소드를 가질 수 있을 뿐만 아니라 일반 메소드도 가질 수 있다.
abstract class AbstractClass {
abstract void print(); // 추상 메소드
void display() { // 일반 메소드
System.out.println("This is a display method.");
}
}
추상 클래스는 반드시 구현해야 하는 부분에 대해 명시적으로 표현할 수 있다. 하지만 추상 클래스 자체로는 객체를 생성할 수 없다.
추상 클래스를 상속받는 자식 클래스는 추상 클래스의 추상 메소드를 반드시 구현해야 한다. 만약 자식 클래스가 추상 메소드를 구현하지 않는다면, 그 자식 클래스도 추상 클래스가 된다.
abstract class AbstractClass {
abstract void print();
}
class ChildClass extends AbstractClass {
void print() {
System.out.println("Printing from ChildClass");
}
}
위의 예시에서 ChildClass는 AbstractClass를 상속받고 있으며, print() 메소드를 오버라이딩하여 구현하고 있다. 이렇게 자식 클래스에서 추상 메소드를 구현함으로써 추상 클래스를 실체화할 수 있다.