일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 프로세스
- 내부 단편화
- 데코레이터 패턴
- 절대 주소
- GetX
- Dispatchers
- DiffUtil
- apk 빌드 과정
- 상태관리
- 물리 메모리
- 플로이드워셜
- http발전과정
- 운영체제
- flutter
- 자이고트
- viewModelScope
- 디자인 패턴
- 안드로이드
- AAC
- AsyncListDiffer
- 리사이클러뷰풀
- 리사이클러뷰
- Android
- appcompatactivity
- recyclerview
- 뷰홀더
- NestedScrollView
- Kotlin
- http 역사
- appcompatacitivity
- Today
- Total
hong's android
[Java] Abstract class VS Interface 본문
Abstract class (추상화 클래스)
추상 : 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용.
자바에서의 추상 클래스
공통된 메소드, 필드를 묶어 하나의 클래스를 만드는 것을 의미한다. 추상화는 공통된것을 묶어놓는것이다. 코드를 다시 재사용하거나 공통된 특징들을 파악하기 편리하다.
Interfacet (인터페이스)
인터페이스: 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다.
(즉 인터페이스는 서로 소통을 하기위한 미리 만들어 놓은 규칙, 프로토콜이다.)
자바에서의 인터페이스
클래스들이 구현해야 하는 동작을 지정하는데 사용되는 추상 자료형이다.
서로 관계가 없는 객체들간 소통을 위해서 사용한다. 그러니까 미리 정해놓은 인터페이스의 추상 메소드들을 사용해서 서로 어떤 기능을 구현해야 하는지 확인 할 수 있고, 인터페이스를 통해 일정한 규칙을 통해서 소통을 할 수 있다.
인터페이스, 추상화 클래스의 목적이 다르다. 위 목적의 차이가 생기다보니 자바에서 두개의 지원해주는 기능의 차이점이 있다. 이런 목적을 가졌기 때문에 기능 또한 차이가 생긴다.
자바에서 차이점
Abstract class
공통된 특징들을 묶어놓은 클래스가 존재해서 공통된 클래스에서 상속받고 코드를 재사용하기 편하다.
Interface
특정 규칙들이 미리 정해져있으면 어떤 기능을 구현하려고 할때 필요한 메소드들이 무엇인지 보기 편하고 같은 기능들을 가진 클래스들은 같은 규칙을 사용한 메소드를 사용하니까 가독성 면에서도 편리하다. 두 클래스 객체가 인터페이스를 통한다면 서로에 대한 의존성이 낮아진다. (커플링 방지)
사용 케이스
- 추상 클래스
관련이 있는 클래스들의 공통점을 묶어서 코드를 재사용 하고싶을때 사용한다.
- 인터페이스
관련이 없는 클래스들을 구현할때, 일정한 규칙(추상 메소드)를 만들어야하는 경우. 즉, 클래스에 상관하지 않고 특정 기능들에 대한 규칙을 만들어 놓고싶을때 사용한다.
'Develop > Java' 카테고리의 다른 글
[Java] Map 인터페이스 (0) | 2022.12.31 |
---|---|
[Java] 자바와 Jvm에 대해서 (0) | 2022.12.26 |
[Java] DeadLock (0) | 2022.12.20 |
[Java] java.lang.String 클래스에 대해서 (0) | 2022.12.20 |
[Java] Arraylist의 길이 확장 방법 (1) | 2022.12.20 |