인프런 커뮤니티 질문&답변

wnguddl96님의 프로필 이미지

작성한 질문수

호주 현직 자바 개발자가 묻고 답하는 영어 기술면접 25

What is the difference between Abstact class and interface and using for ?

접근제한자의 차이 질문

22.02.02 15:35 작성

·

175

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
추상클래스는 모든 접근제한자가 사용 가능하고
인터페이스는 오직 public만 가능하다고 정리해주셨는데
 
두 클래스의 접근제한자 사용 가능 여부가 차이나는 이유는 무엇인가요?
단일 상속과 다중 상속의 차이 때문인가요?

답변 2

2

wnguddl96님의 프로필 이미지
wnguddl96
질문자

2022. 02. 09. 16:20

아하!! 이해 되었습니다 감사해요:)

1

Jin Seo님의 프로필 이미지
Jin Seo
지식공유자

2022. 02. 04. 00:06

일단 인터페이스의 경우는 일종의 프로토콜을 설정할때 주로 사용합니다. 특별한 내용은 상관이 없고 그냥 빈껍데기인 형식만 규정하는 것이지요.

따라서 알맹이를 채워줄 의지가 있는 누구나 사용할수 있는 public 제한자가 적합하겠지요.

하지만 추상클래스는 '클래스+인터페이스' 성질이 있습니다. 일반 자바 클래스이면서 빈껍데기를 선언한 ..짬짜면같은 존재라고 해야할까요?

물론 빈껍데기인 인터페이스 부분은 다른 클래스들에서 다양하게 구현이 될겁니다. 

그래서 추상클래스는 거의 대부분 Super Class로 활용이 되는것이구요.

앞서 말씀드린대로 추상클래스는 일반 클래스의 성질도 가지고 있습니다.

자바의 클래스라면 Encapsulation이란 개념을 가질수 있어서 클래스내의 멤버들은 private까지 가능하니 결국 모든 접근제한자가 추상클래스에서는 사용 가능한 것입니다.