일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- url 추적
- UIPresentationController
- detect url
- ViewBuilder
- GeometryReader
- swift
- transformation.map
- DevelopmentRegion
- notifychanged
- 개발자 면접
- DataBinding
- url 관찰
- UIViewControllerTransitioningDelegate
- base64 변환
- development language
- Tuist
- scrolling tab
- swift #swift keychain #keychain 사용법
- 기존 앱
- 상단 탭바
- pod install
- convert base64
- Side Menu
- List
- Swift Package Manager
- SwiftUI
- 스크롤 탭
- Android
- ios
- oberve url
- Today
- Total
버그 잡이
Interface 개념 정리 #추상클래스 vs 인터페이스 #다형성 본문
추상클래스 vs 인터페이스
1. 정의
- 추상클래스 : 1개 이상의 추상메소드를 가진 클래스
- 인터페이스 : 모든 메소드가 추상 메소드인 추상 메소드 모음
2. 차이점
"사용 목적에 있어서 다릅니다." (핵심)
추상 메서드
- 부모 클래스의 기능을 이용 및 확장
인터페이스
- 구현 객체와 동일한 동작을 강제. 일종의 설계도와 같은 역할
+그 외
추상 메서드
- 클래스로 구체적인 로직이나 상태를 가질 수 있습니다.
- 단일 상속
인터페이스
- 인터페이스로 구체적인 로직이나 상태를 가질 수 없습니다.
- 다중 상속 가능
인터페이스와 다형성
인터페이스는 "메소드에 대한 정의를 먼저 하고 구현을 미루는 패턴"입니다.
이렇게 어떤한 행동에 대한 구체적인 구현을 나중으로 미루는 것을 추상이라고 합니다.
추상화를 통해 자바의 특징 중 하나인 다형성을 구현할 수 있습니다.
즉, 같은 인터페이스를 implement했지만 다른 동작을 하는 메서드를 구현할 수 있는 것입니다.
콜백, 리스너, 옵저버
다형성으로 우리가 흔히 하는 작업은 '콜백, 리스너, 옵저버' 를 만들어 사용하는 것입니다.
개념적으로 조금씩 차이가 있지만 큰 틀은 같습니다.
"A 클래스에서 메소드를 정의하고 B 클래스에서 메소드를 구현" 하는 것이지요.
Ex_안드로이드 리사이클러뷰 클릭리스너 패턴
- interface 없이 클릭리스너를 adapter에 구현하면 adapter의 자원만 활용할 수 있기 때문에 activity의 자원을 활용한 작업을 진행할 수 없습니다(ex_액티비티 이동)
- interface의 다형성을 활용하여 adapter와 activity를 연결하면 위와 같은 문제를 해결할 수 있습니다.
- adapter 내부에 리스너 interface를 선언하고 이에 대한 구현은 activity에서 진행합니다.
- adpter에서는 클릭시 해당 interface를 동작시키게만 하고 실제 구현은 activity에서 진행하는 것입니다. 이를 통해 activity의 자원을 활용한 작업을 진행할 수 있습니다.
(구체적인 코드 구현은 아래 찰스님의 블로그를 참조 바랍니다.)
#결론
1. 인터페이스는 하나의 명세로 개발자들 간의 협업을 돕느다.
2. 인터페이스의 다형성을 활용하여 다른 클래스의 자원을 활용할 수 있다.
*참고
'안드로이드 > 자바' 카테고리의 다른 글
[JAVA] static 과 final (0) | 2020.03.28 |
---|---|
[Java] Json 파싱하기 #JSONArray, JSONObject #json에서 원하는 값 추출 (0) | 2020.03.19 |
java 콜백, android 콜백 (0) | 2020.03.12 |
자바(java) Null Check, 안드로이드 null check (0) | 2020.03.11 |