hmk run dev

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

java

추상클래스 & 인터페이스

hmk run dev 2022. 2. 16. 15:40

추상 클래스 

사용하는 이유 - 상속을 강제하기 위함

부모 클래스에서 정의만 해놓고, 실제 동작은 자식 클래스에서 하게 됨

이러한 추상 클래스의 성격이 잘 반영되어진 것이 팩토리 메서드 패턴(Factory Method Pattern)이다.

 

추상클래스는 일반 클래스와 크게 다르지 않다.

단지, 추상 메서드를 선언해 상속을 통해 자손 클래스에서 완성을 유도하는 클래스라고 할 수 있다.

 

비유하자면 미완성 설계도라고 할 수 있다.

상속을 위한 클래스 이므로 따로 객체생성이 불가능하다.

abstract class className {
    ...
    public abstract void methodName();
}

- 추상 클래스는 인스턴스, 즉 객체를 만들 수 없는 클래스

- 추상 메소드는 하위 클래스에서 메소드 구현을 강제해야 한다. (추상 메소드만)

- 추상 메소드를 포함하는 클래스는 반드시 추상 클래스여야 한다.

- 상속하는 집한간에는 연간관계가 있다.

- 다중 상속불가.

 

인터페이스

사용하는 이유 - 설계도라고 생각하면 된다.

하나의 규약, 즉 구체적인 약속 같은 것으로 협업할때 필수적이라고 볼 수 있다.

큰 프로젝트, 많은 개발인원이 투입되는 프로젝트 일수록 인터페이스의 장점이 부각됨

 

추상클래스와 인터페이스 모두 추상메서드를 사용할 수 있다.

추상클래스가 인터페이스의 역할을 모두 수행할 수 있는데 굳이 2가지로 나누는 이유는?? 

 

차이점

다중상속

- 인터페이스 : 가능

- 추상클래스 : 불가능

 

부모 메소드 강제구현

- 인터페이스 : 모두 강제 구현

- 추상클래스 : 추상 메소드 강제 구현

 

인터페이스를 사용해 기본틀을 구성한다면 공통으로 필요한 기능들도 모든 클래스에서 오버라이딩해 재정의 해야한다.

각가 다른 추상클래스를 상속하는데 공통된 기능이 필요하다면? 인터페이스를 사용하는게 낫다.

 

정리

정리하자면, 인터페이스는 implements 라는 키워드처럼 인터페이스에 정의된 메소드를 각 클래스의 목적에 맞게 기능을 구현하는 설계도 느낌이고,

추상 클래스는 extends 키워드를 사용해서 자신의 기능들을 하위 클래스로 확장 시키는 미완성 설계도 느낌이라고 생각합니다.

 

'java' 카테고리의 다른 글

서블릿 & 스프링  (0) 2022.02.20
JAVA 메모리 구조  (0) 2022.01.31
JPA @Query 띄워쓰기 주의 사항  (0) 2022.01.12
jsoup 네이버 블로그 크롤링(iframe)  (5) 2021.12.04
generic  (0) 2021.11.14
Comments