TIL 2023-10-20 깊은 고뇌, 추상 클래스와 인터페이스 차이

2023. 10. 20. 23:27TIL
목차
  1. 추상 클래스와 인터페이스
  2. 추상 클래스
  3. 인터페이스
  4. 그러면 추상 클래스에 메소드만 넣어두면 그게 인터페이스 아니야?
  5. 어? 그러면 인터페이스는 쓰레기 아니야? 안써도 되잖아

오늘 하루 종일 이러면서 고민했다..

추상 클래스와 인터페이스

너네 둘은 왜 나눠 놓는 거냐? 추상 클래스에 메소드 밖에 없으면 인터페이스 역할을 하는 거 아닌가?

부터 시작 된 고뇌... 어제 나를 잠 못이루게했다. (오늘도 그럴듯)

추상 클래스에 메소드 밖에 없으면 인터페이스 역할을 하는 건데 인터페이스를 왜 써야 돼?

존재 이유가 뭐야? 도대체 뭔데!!

 

추상 클래스

추상 클래스는 말 그대로 어떤 객체의 행위를 추상화 해놓은 것이다.

그 객체가 가지고 있는 추상화 된 행위를 자식 개체는 상속을 받아서 행위를 확실하게 정의하여 사용할 수 있다.

자바에서는 오버라이딩을 이용해서 재구현 할 수 있다.

추상 클래스는 상속을 해야 진가가 발휘되는데, 상속을 한다는 점에 집중해서 밑의 그림을 보자

사람으로 예를 들자면 민수와 철수는 사람이다. 하지만 말투는 다르다.

둘다 말을 할 수 있지만 말투가 다르다. 내가 다른 객체(사람) 영수를 만든다고 하면

영수도 똑같이 말을 하지만(일반 메소드) 말투(추상 메소드)는 다를 수 있다. 이 말투를 추상화 하는 거다.

말은 할 수 있으나 말투는 다를 수 있다

추상 클래스는 인스턴스화를 시킬 수 없다. 왜냐하면 자바가 모호한 걸 싫어하기 때문이다. (다른 언어는 뭔지 모르겠다)

모호한 사람을 만들어 낼 수는 없다. 이게 추상 클래스다.

 

인터페이스

인터페이스는 추상 메서드의 집합이라는 말을 많이 들었을 것이다.

영어로 말하자면 추상 클래스는 (kind of~~) 인터페이스는 (able to~~) 라고 생각하면 된다.

소리를 내는 게 뭘까?
같은 종류는 아니지만 소리를 내는 행위를 한다!

위의 사진이 내가 생각하는 인터페이스다

대충 소리를 내는 게(행위) 뭘까? 를 생각하면 그게 인터페이스가 되는 거다

거기서 조금 더 행위를 추가 시켜가며 인터페이스를 상속 상속 시키다보면 어느새 객체까지 와있는 것이다.

 

그러면 추상 클래스에 메소드만 넣어두면 그게 인터페이스 아니야?

맞다! 추상 클래스에 메소드만 넣어두면 인터페이스와 동일한 역할을 하는 것이다.

근데 우리가 객체지향을 쓰는 이유를 생각해야된다.

코드의 유지보수성을 높히고.. 이 부분이다

추상 클래스는 나중에 확장(상속)할 수 있는 장점을 가진다. 필요에 따라 일반 메서드를 넣어서 공통된 메서드를 구현을 할 수 있다.

인터페이스는 여러 인터페이스를 클래스에 구현 할 수 있다. 다중 구현이라고 생각하면 될거 같다. 그러나 일반 메서드를 넣지 못한다.

 

어? 그러면 인터페이스는 쓰레기 아니야? 안써도 되잖아

천만에 말씀 만만에 콩떡이다

인터페이스는 클래스간의 의존성을 낮춰줄 수 있다는 점이 있다.

4번 너 마음에 안들어
너 저리가

나는 이렇게 이해했는데 솔직히 이 부분은 맞는 생각이나 설명인지는 모르겠다.

이 부분은 다음주 월요일에 물어봐야지...

 

오늘은 여기서 끝

 

 

저작자표시 (새창열림)

'TIL' 카테고리의 다른 글

TIL 2023-10-24 Github Pull Request 가이드, 팀 협업!!  (0) 2023.10.24
TIL 2023-10-23 Class별 역할 충실히하기 / 키오스크 프로젝트 완료  (0) 2023.10.23
TIL 2023-10-19 키오스크 프로젝트 장바구니 주문 구현 메소드  (0) 2023.10.19
TIL 2023-10-18 프로그래머스 조건 문자열, 키오스크 개인 프로젝트 설계 및 구현 시작  (0) 2023.10.18
TIL 2023-10-17 매개변수, 인자, 가변길이란 무엇인가  (0) 2023.10.17
  1. 추상 클래스와 인터페이스
  2. 추상 클래스
  3. 인터페이스
  4. 그러면 추상 클래스에 메소드만 넣어두면 그게 인터페이스 아니야?
  5. 어? 그러면 인터페이스는 쓰레기 아니야? 안써도 되잖아
'TIL' 카테고리의 다른 글
  • TIL 2023-10-24 Github Pull Request 가이드, 팀 협업!!
  • TIL 2023-10-23 Class별 역할 충실히하기 / 키오스크 프로젝트 완료
  • TIL 2023-10-19 키오스크 프로젝트 장바구니 주문 구현 메소드
  • TIL 2023-10-18 프로그래머스 조건 문자열, 키오스크 개인 프로젝트 설계 및 구현 시작
wonow_
wonow_
꾸준히 성장하는 개발자 WONOW 입니다. 🤗
wonow_
wonow_
wonow_
전체
오늘
어제
  • 분류 전체보기
    • Language
      • JAVA
    • TIL
    • 코딩테스트
      • 프로그래머스
      • 백준
    • 프로젝트
      • JAVA
      • Spring
    • 기타
    • ERROR
      • Spring
    • CS
      • 알고리즘
      • DB
      • Kafka
    • 잡담
    • 활동
      • 척척박사

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 오블완
  • 티스토리챌린지
  • 문자열 붙여서 출력하기
  • 공부열심히하자
  • 홀짝 구분하기
  • 티스토리 꾸미기
  • 프로그래머스
  • 문자열 돌리기
  • 나는바봉가봉가

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
wonow_
TIL 2023-10-20 깊은 고뇌, 추상 클래스와 인터페이스 차이
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.