본문 바로가기
JAVA 프로그래밍/자바 기초 시리즈

추상 클래스 정리

by @ENFJ 2023. 2. 20.
추상클래스를 배우기전에 '상속' 에 대해 알고 난 후 배우는것이 좋습니다.

추상클래스는 완전하지 않은 클래스 입니다. 완전하지 않다는 것은 부족하다는 뜻일수 있지만, 다른 한 편으로 가능성이 남아 있다는 의미이기도 합니다.

이 가능성을 활용해서 좀 더 확장 가능하고 다양한 프로그램을 개발할 수 있습니다. 

추상적 : 구체적이지 않고 막연한 것

 

추상 클래스(abstract class) = 구체적이지 않은 클래스

 

추상 클래스가 아닌 클래스는 concrete class 라고 한다. 

 

추상클래스항상 추상 메서드를 포함한다.

 ( 추상 메서드는 구현 코드가 없습니다. -> 구현 코드가 없다는 것은 함수 몸체(body)가 없다는 뜻)

 

abstract int add(int x, int y);

추상 메서드는 위와 같이 abstract 예약어를 사용합니다. 그리고 { } 대신 ; (세미콜론)을 씁니다.

 

{ } 중괄호 대신 ; 세미콜론을 쓴다는것은 즉, 중괄호가 있다면 추상메서드가 아니라는 것이죠.

int add(int x ,int y){}

위의 add 메서드는 추상메서드가 아닙니다.

 

 


 

추상 클래스는 인스턴스로 생성할 수 없습니다.

 - > 추상 클래스는 모든 메서드가 구현되지 않았으므로 인스턴스로 생성할 수 없습니다.

 

하지만 추상클래스에서도 형 변환을 사용할 수는 있다.

 


생성할 수 없는 추상 클래스는 어디에 쓰는 걸까?

-> 추상 클래스는 상속을 하기 위해 만든 클래스입니다. 

추상 클래스에서 구현하는 메서드는 하위클래스에서도 사용할 ,즉 하위 클랫에서도 구현 내용을 공유할 메서드를 구현합니다.

 

실제 클래스에서 내용을 각각 다르게 구현해야 한다면, 구현 내용을 추상 메서드로 남겨두고 하위 클래스에 구현을 위임하는 것입니다.

 

- 구현된 메서드 : 하위 클래스에서 공통으로 사용할 구현 코드. 하위 클래스에서 재정의 할 수 도 있음.

 

- 추상 메서드 : 하위 클래스가 어떤 클래스냐에 따라 구현 코드가 달라짐.