goodbye

추상클래스와 인터페이스 본문

Java

추상클래스와 인터페이스

goodbye 2021. 12. 12. 18:50

1. 추상클래스

추상클래스는 일반적인 클래스와 동일하게 멤버 변수와 메서드를 갖습니다. 그리고 추가적으로 추상메서드를 갖습니다.

추상메서드는 메서드의 선언부만 존재하고 구현코드가 없는 아래와 같은 메서드를 말합니다.

public String getMyProfile(int memberNo);

구현부가 없는 메서드를 단 하나라도 가진 클래스는 충상 클래스가 됩니다. 추상 클래스가 되면 new 키워드를 사용하여 인스턴스화 할 수 없습니다. 즉, 클래스를 쓸 수 없습니다. 이 크래스를 사용하려면 어떻게 해야 할까요?

 

다른 클래스가 이 추상 클래스를 상속받아야 합니다. 상속 받은 자식 클래스가 부모 클래스에 존재하는 추상메서드를 전부 오버라이딩하여 구현부를 작성하면 비로소 사용할 수 있는 객체가 됩니다.

 


2. 인터페이스

 

인터페이스는 사실 추상 클래스의 특수형태입니다. 추상 클래스중에서 멤버 변수와 메서드를 제거한 채 추상 메서드만을 남긴 형태가 인터페이스 입니다.(인터페이스도, public static 상수를 가질 순 있습니다)

 

인터페이스도 마친가지로 이를 구현한 자식 클래스에서 인터페이스의 추상 메서드를 모두 오버라이딩 해야 비로소 객체로 사용할 수 있습니다(추상 클래스나 인터페이스를 구현한 자식 객체가 추상 메서드를 전부 구현하지 않았다면 아예 컴파일이 되지 않습니다. 혹은 자식 객체도 추상클래스가 되어야 합니다)

 

 


3. 추상클래스와 인터페이스의 차이점

 

추상 클래스와 인터페이스의 차이점은 그 목적이라고 할 수 있습니다.

추상 클래스는 기본적으로 클래스이며 이를 상속, 확장하여 사용하기 위한 것입니다.

반면 인터페이스는 해당 인터페이스를 구현한 객체들에 대한 동일한 사용방법과 동작을 보장하기 위해 사용합니다.

 

'Java' 카테고리의 다른 글

Optional -1  (1) 2022.12.26
Java Stream & Function API  (0) 2022.12.21
Concurrency solution -1  (0) 2022.10.22
좋은 객체 지향 설계의 5가지 원칙 - SOLID  (0) 2021.10.25
[Java] enum(enumeration)  (5) 2021.07.27
Comments