728x90

인터페이스의 쓰임새

*UI(유저 인터페이스) 아님!!!

  • 다중 상속
  • 콜백 메소드

인터페이스의 기능: 1) 다중 상속

1. Java에서는 2개 이상의 상속이 불가능하다

2. '상속(extends)' 대신 '구현(implements)'하자.

3. by '인터페이스'

 

상속 (extends) 구현 (implements)
- 아이덴티티를 보유한다
ex) 개는 동물이다 (개는 동물에 완전히 속하므로)
- 역할(role)을 부여한다
ex) 개는 반려동물이다 (일부 개에게만 해당)

- 구현 implements은 변수를 상속받지 않는다 (오로지 행동 메서드만 취함)

 

 attackable이라는 interface를 만들면 우리가 지정한 대상에 한해서 attack이라는 메소드를 공유할 수 있도록 함

(부모클래스에 attack 포함하면 그것을 상속하는 모든 클래스가 attack할 수 있게 되므로 No)

 

https://www.youtube.com/watch?v=49COMLtdY04

→ sell 파는 것 & upgrade : Trade와 관련된 것들은 서로 공유할 수 있도록 함.

 


인터페이스의 기능: 2) 콜백 함수

Callback

사용자가 버튼을 눌렀을 때(event) 뭔가 하고싶어

- 앱을 사용하다가 홈버튼을 누르면 어떻게 처리하지?

- 다운로드가 완료되었으면 알림을 울릴 수 없을까?

 

콜백 메소드: 이러한 시점(event)에 호출되는 메소드

Q. 어떤 게 콜백이지?

- 콜백 메소드는 보통 onClick, onTouch, onPressed 등 on~이 붙는다.

- 콜백을 정의한 인터페이스는 보통 OnClickListener, OnTouchListener 등 Listener가 붙는다.

https://www.youtube.com/watch?v=IBxiy7dzv_4&t=333s

 

- OnDownloadListener: 인터페이스

- Download(this)의 this는 Downloader 클래스일 수도 있고, OnDownloadListener 인터페이스일 수도 있는데, 실제 Download 함수 정의한 내용에서 매개변수로 오직 OnDownloadListener만을 취하므로, 후자를 가리키게 됨

- Download 함수에서 정의한 코드가 완료되면 listener 인터페이스에 onDownloadFinish()라는 메소드가 실행됨.

- "다운로드라는 이벤트를 완료했어"라는 알림을 onDownloadFinish라는 콜백함수가 listener 인터페이스에게 전달해주는 것임.

- onDownloadFinish 콜백 함수는, 실제로 OnDownloadListener이라는 인터페이스로부터 받아온 (@Override) 함수임.

 



reference: 겜팔이의 안드로이드 세뇌교실

728x90

+ Recent posts