하나 이상의 추상 메소드를 포함하는 클래스를 가리키는 것을 말함
객체 지향 프로그래밍(OOP:Object Oriented Programming)에서 중요한 특징인 다형성을 가지는 메소드의 집합을 정의할 수 있도록 하는 것을 말함!
메소드를 추상 클래스에 추상 메소드로 선언해 놓으면, 클래스를 상속받는 모든 클래스에서는 추상 메소드를 반드시 재정의 해줘야함!
[예제]
// 추상클래스
abstract class Test {
// 추상 메소드
abstract 반환타입 메소드이름();
}
동작이 정의되어 있지 않은 추상메소드를 포함하고 있기에 인스턴스를 생성해 줄 수 없음!
상속을 통해 자식 클래스를 만들고, 만든 자식 클래스에서 추상 클래스의 모든 추상 메소드를 오버라이딩해야지만 자식 클래스의 인스턴스를 생성 할 수 가 있음!
추상메소드를 포함하고 있다는 점을 제외하고 일반 클래스와 모든 점이 동일하고, 생성자와 필드, 일반 메소드도 포함할 수 있음을 알 수 있음!
자식 클래스에서 반드시 오버라이딩해야지만 사용할 수 있다는 의미임!
추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함임!
모듈처럼 중복되는 부분이나 공통적인 부분은 미리 다 만들어진 것을 사용하지만, 이를 받아 사용하는 쪽에서는 자신이 필요한 부분만을 재정의하여 사용함으로써 생산성이 향상되고 배포도 쉬워짐!
추상 메소드는 선엄부만 존재하며, 구현부는 작성되어 있지 않음
작성되어 있지 않은 구현부를 자식 클래스에서 오버라이딩하여 사용한다는 의미임!
[예제]
// 추상메소드
abstract 반환타입 메소드이름();