본문 바로가기
프로그래밍 언어/JAVA

[JAVA] 추상 클래스(abstract)

by 느링 2017. 8. 28.

추상 클래스( abstract )

어떤 메소드를 추상적으로만 정의하고,

실제로 필요한 곳에 따라서 재정의 해야 하는 강제성을 가진 클래스

 

즉, 추상 클래스가 부모가 되어 자식에게 물려줄 때 '꼭 재정의해야 한다.' 라는 조건이 붙었다고 보면 됩니다.

 

추상 클래스를 사용하는 이유

추상 클래스는 상속을 강제하기 위한 입니다. 

즉, 부모 클래스에는 메소드의 시그니처만 정의해놓고 그 메소드의 실제 동작 방법은 이 메소드를 상속받은 하위 클래스의 책임으로 위임하고 있습니다. 사실 코드를 이런 식으로 작성하는 경우는 작은 규모의 프로젝트에서는 거의 없습니다.

 

추상 클래스의 문법

재정의 해야 하는 메소드가 하나라도 있으면 클래스가 추상 클래스가 됩니다.

클래스 안에

public abstract void 메소드명( ); 이라고 선언되어 있다면

이 메소드를 포함한 클래스는 abstract라고 같이 선언하지 않으면 오류가 납니다.

 

추상메소드는 { } 대괄호 안에 정의 해놓지 않습니다.

상속받는 자식 클래스들이 무조건 재정의를 해주어야 하기 때문에 필요가 없는 것입니다.

ex) public abstract void speek( );

 

abstract 클래스는 인스턴스 생성이 불가합니다.

추상적인 개념이기 때문에 실체화를 할 수 없기 때문입니다.