인터페이스의 쓰임새
*UI(유저 인터페이스) 아님!!!
- 다중 상속
- 콜백 메소드
인터페이스의 기능: 1) 다중 상속
1. Java에서는 2개 이상의 상속이 불가능하다
2. '상속(extends)' 대신 '구현(implements)'하자.
3. by '인터페이스'
상속 (extends) | 구현 (implements) |
- 아이덴티티를 보유한다 ex) 개는 동물이다 (개는 동물에 완전히 속하므로) |
- 역할(role)을 부여한다 ex) 개는 반려동물이다 (일부 개에게만 해당) - 구현 implements은 변수를 상속받지 않는다 (오로지 행동 메서드만 취함) |
→ attackable이라는 interface를 만들면 우리가 지정한 대상에 한해서 attack이라는 메소드를 공유할 수 있도록 함
(부모클래스에 attack 포함하면 그것을 상속하는 모든 클래스가 attack할 수 있게 되므로 No)
→ sell 파는 것 & upgrade : Trade와 관련된 것들은 서로 공유할 수 있도록 함.
인터페이스의 기능: 2) 콜백 함수
Callback
사용자가 버튼을 눌렀을 때(event) 뭔가 하고싶어
- 앱을 사용하다가 홈버튼을 누르면 어떻게 처리하지?
- 다운로드가 완료되었으면 알림을 울릴 수 없을까?
콜백 메소드: 이러한 시점(event)에 호출되는 메소드
Q. 어떤 게 콜백이지?
- 콜백 메소드는 보통 onClick, onTouch, onPressed 등 on~이 붙는다.
- 콜백을 정의한 인터페이스는 보통 OnClickListener, OnTouchListener 등 Listener가 붙는다.
- OnDownloadListener: 인터페이스
- Download(this)의 this는 Downloader 클래스일 수도 있고, OnDownloadListener 인터페이스일 수도 있는데, 실제 Download 함수 정의한 내용에서 매개변수로 오직 OnDownloadListener만을 취하므로, 후자를 가리키게 됨
- Download 함수에서 정의한 코드가 완료되면 listener 인터페이스에 onDownloadFinish()라는 메소드가 실행됨.
- "다운로드라는 이벤트를 완료했어"라는 알림을 onDownloadFinish라는 콜백함수가 listener 인터페이스에게 전달해주는 것임.
- onDownloadFinish 콜백 함수는, 실제로 OnDownloadListener이라는 인터페이스로부터 받아온 (@Override) 함수임.
reference: 겜팔이의 안드로이드 세뇌교실
'개발 > Mobile' 카테고리의 다른 글
[Java] 인터페이스2, 다형성 (0) | 2023.09.17 |
---|---|
[Android] Intent (0) | 2023.09.17 |
[Android] 안드로이드의 주요 개념 (Activity/View/Layout/Multi Thread) (0) | 2023.09.17 |
[Android] Activity States / Callback graph / 다음 액티비티로 넘어가는 Intent (0) | 2023.09.16 |
[Android] 간단한 이벤트 추가 (1) | 2023.09.16 |