본문 바로가기
컴소니/개발

[다시 시작하는 JAVA 개발] 추상 클래스

by 금소니 2022. 6. 7.
반응형

#222

1. 추상 클래스란?

추상 클래스는 말 그대로 추상적인 클래스를 의미합니다.

조금 더 자세히 말씀드리자면 클래스는 클래스지만 일반 클래스와 달리 내용이 구체적이지 않고 추상적으로 형태만 가지고 있는 클래스입니다.

따라서 단독으로는 쓰이지 않으며, 앞서 포스팅한 상속과 뗄레야 뗄 수 없는 관계입니다.

 

2. 추상 클래스의 형태와 특징

 추상 클래스의 경우 아래와 같은 형태를 가지고 있습니다.

abstract class ab {		//추상 클래스
	abstract void test();	//추상 메소드
}

가장 기본적인 형태로 보시면 구체적인 내용은 없고 형태만 있습니다.

여기서 중요한 점은 만약 추상 메소드를 하나라도 정의하셨다면 해당 클래스는 무조건 추상 클래스가 되어야 합니다.

 

그렇다면 왜 이렇게 형태만 있는 추상 클래스를 사용하는지 알아보도록 하겠습니다.

추상 클래스는 구체적인 내용은 없지만 형태를 잡아둬 자식 클래스에서 이를 오버라이딩하여 사용할 수 있게 해줍니다.

교수님께서 개발 과제를 내주실 때 Pseudo-code로 기본적인 함수 이름이나 기능들을 알려주곤 했었는데요.

비슷한 느낌으로 추상 클래스는 자식 클래스에서 실제 기능들이 구현되도록 뼈대를 잡아준다고 보시면 됩니다.

즉, 설계단계에서 아주 유용하게 사용된다고 보시면 됩니다.

 

또한, 형태만 가지고 있기때문에 추상 클래스의 경우 직접 객체 생성이 불가능합니다.

오로지 자식 클래스에서 활용만 가능합니다.

 

3. 추상 클래스 예제

그럼 실제 추상 클래스를 활용해보도록 하겠습니다.

 

예제는 이전에 사용하였던 패키지를 이용하겠습니다.

1) 추상 클래스

간단하게 추상 메소드로 eat() 하나만 만들어주었습니다.

 

2) 자식 클래스

자식 클래스의 경우 현재 추상 클래스인 부모 클래스로부터 상속받고 있으며, 추상 메소드를 포함하고 있습니다.

(추상 메소드를 포함하지 않을경우 에러가 발생합니다.)

 

3) 메인 클래스

먼저 추상 클래스의 객체를 생성 시도해보겠습니다.

아래처럼에러가 발생하고 정상적으로 생성되지 않습니다.

그 외의 자식 클래스의 객체의 경우 정상적으로 생성이 되고 부모 클래스(추상 클래스)의 메소드를 오버라이딩하여 정상적으로 내용들이 출력됩니다.

반응형

댓글