추상 클래스(Absract Class)
- 추상 클래스는 분류가 비슷한 클래스들의 공통적인 속성과 기능을 추출하여 선언한 클래스입니다.
- 즉, 부모 클래스로 활용하기 위하여 만들어지는 미완성된 클래스입니다.
- 이런 이유로 추상 클래스는 스스로 객체를 만들어낼 수 없고, 상속을 통해서만 실체화 할 수 있습니다.
- 추상 클래스도 일반 클래스와 같이 필드, 컨스트럭터, 메서드를 멤버로 가질 수 있습니다.
- 하지만 추상 클래스는 반드시 하나 이상의 추상 메서드를 포함해야만 합니다.
(반대로 하나라도 추상 메서드가 존재한다면 해당 클래스는 반드시 추상 클래스로 선언해야 함) - 추상 클래스로부터 상속 받는 미완성 메서드는 자식 클래스에서 반드시 구현(오버라이딩)해야 합니다.
(단 자식 클래스도 추상 클래스로 선언되는 경우 예외)
추상 제어자(Abstract Modifier)
- abstract는 추상적인 이라는 의미로 사용되는 제어자입니다.
- abstract 제어자는 클래스나 메서드 앞에 붙어 미완성 상태(추상적 상태)임을 표시합니다.
- abstract가 붙은 메서드를 추상 메서드라고 합니다.
- abstract가 붙은 클래스를 추상 클래스라고 합니다.
- 추상 클래스는 반드시 추상 메서드를 포함하기 때문에 메서드에 abstract가 붙는다면 이를 포함하는 클래스에도 반드시 abstract가 붙어야합니다.
추상 메서드(Abstract Method)
- 추상 메서드는 세부 기능이 구현되지 않고, 반환 자료형, 메서드 이름, 매개변수만 정의된 메서드입니다.
- 추상 메서드는 일반화를 통해 생성한 공통 클래스 안에서 공통 기능을 정의할 때 조금 더 효과적으로 활용하기 위해 사용됩니다.
- 추상 클래스는 반드시 하나 이상의 추상 메서드를 선언해야 하고, 이를 상속받는 일반 클래스에서 반드시 메서드를 구현해야 합니다.
- 때문에 추상 메서드는 자식 클래스에서 반드시 정의되어야 하는 기능을 놓치지 않고 구현할 수 있도록 도와줍니다.
추상 클래스 및 추상 메서드 선언 방법
abstract class 클래스명 {
// 필드
// 컨스트럭터
// 추상 메서드
abstract 반환자료형 메서드이름(매개변수 ... );
}
추상 클래스의 인스턴스 생성
- 추상 클래스의 인스턴스를 생성하기 위해서는 이를 상속 받는 자식 클래스를 생성해야 합니다.
- 이렇게 생성된 자식 클래스를 형 변환(업 캐스팅)하여 부모 클래스 타입으로 선언할 수 있게 됩니다.
추상 클래스의 인스턴스 생성 예시
// 추상 메서드를 포함하는 추상 클래스 선언
abstract class AbstractClass {
abstract void abstractMethod();
}
class ConcreteClass extends AbstractClass {
void abstractMethod() {
System.out.println("구체화된 추상 메서드");
}
}
public class main {
public static void main(String[] args) {
// 추상 클래스의 인스턴스를 직접 생성하는 방식은 작동하지 않음
// AbstractClass ac = new AbstractClass();
// 아래 방식으로 추상 클래스의 인스턴스 생성 가능
AbstractClass ac = new ConcreteClass();
// 자식 클래스에서 구체화한 메서드 사용 가능
ac.abstractMethod();
}
}
'Programing Language > Java' 카테고리의 다른 글
[Java] 인터페이스(Interface) (0) | 2022.07.06 |
---|---|
[Java] 인터페이스의 상속 및 다형화(Interface Inheritance & Polymorphism) (0) | 2022.07.06 |
[Java] 클래스의 추상화(Abstraction) (0) | 2022.07.04 |
[Java] 오버로딩(Overloading) (0) | 2022.07.04 |
[Java] 클래스의 다형화(Polymorphism) (0) | 2022.07.01 |