[JAVA] 추상 클래스(Abstract Class)

2020. 5. 18. 20:49JAVA

추상 클래스(abstract Class)?

상속을 목적으로상위 클래스에 하위 클래스 공통점을 모아두는 목적으로 설계된 클래스이다.

 

추상 클래스 특징 

위에서 언급했듯 상속을 목적으로 둔 클래스이다. 추상 클래스를 틀이라고 생각하면 이해가 빠를 것이다.

예를 들어, 사람의 정보를 클래스 화 시키면 사람에게는 누구나 성별, 이름, 나이 가 있을 것이다.

이런 공통점들을 상위 클래스 인 추상 클래스에 모아 두고 하위 클래스에서 오버 라이딩(재정의) 할 수 있게 한다.

중복 코드를 줄일 수 있으며 코드에 통일성과 유지 보수성이 뛰어나다.(시간 절약)

 

추상 클래스 예제

1. 추상 클래스 인 Shapes, 추상 메서드 Area(넓이) 선언 이때 클래스 앞에 abstract, 메서드는 중괄호 없이 선언하면 된다.

추상 클래스 인 Square를 하위 클래스 인 Square, Triangle 가 상속을 받고 Area 메서드를 오버 라이딩(재정의)을 한다.

(위에서 언급했듯 하위 클래스의 공통점을 모아두도록 설계하는 목적을 가지고 있기 때문에 도형의 넓이를 추상 메서드로 선언한다.)

 

위에 결괏값에서 확인할 수 있듯 재정의 된 걸 알 수 있다.

 

 

인터 페이스?

일종의 추상 클래스에 속하며 자바 7 버전 이전에는 인터페이스는 일반 메서드는 사용 불가능하였지만

8 버전부터는 default 메서드 즉 일반 메서드 도 사용이 가능해졌다.

 

 

추상 클래스, 인터 페이스 차이점

위에서 언급했듯 일반 메서드에 사용 가능 여부에서도 차이를 두고 있었지만, 이는 자바 8 버전부터는 무의미 해졌다.

그렇다면 차이점은 무엇인가?

추상 클래스와 인터페이스의 가장 큰 차이점은 다중 상속의 차이점이다.

상속의 extends와 달리 implements 키워드를 사용하며

인터페이스 같은 경우 다중 상속이 가능하다는 점이다.

 

인터 페이스 예제

 

interface 문법 : 접근제어자 + interface + 인터페이스 명

인터페이스를 선언할 때 접근 제어자를 입력 안 할 경우 public으로 선언된다 즉 public interface Areas, Volumes와 같음.

 

위에 코드를 보면 알다시피 다중 상속이 가능하다는 걸 알 수 있다.

Square라는 클래스 안에 Areas 인터페이스 메서드 인 area, Volumes 인터페이스 메소드 인 volume 

둘 다 오버 라이딩(재 정의) 이 가능하다.

이때 추상 클래스와 달리 extends 가 아닌 implements 예약어를 사용해야 한다.

 

결괏값도 문제없이 출력되는 걸 알 수 있다.

 

'JAVA' 카테고리의 다른 글

[JAVA]오버라이딩(Overriding)  (1) 2020.05.10
[JAVA] 오버로딩(OverLoading )  (3) 2020.05.07
[JAVA] Map(HashMap)  (1) 2020.04.22
[JAVA] List - ArrayList  (2) 2020.04.12
[JAVA] 배열(Array)의 응용  (0) 2020.04.07