마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

초보 문법 질문입니다.

0 추천

public class MessengerService extends Service{

 

static final int MSG_NUMBER = 1;    // 서비스에 대한 명령어

final Messenger mMessenger = new Messenger(new IncomingHandler());    // 클라이언트가 메세지를 보내는 도구

 

// 클라이언트로부터의 메세지를 받았을 때 처리할 클래스

class IncomingHandler extends Handler{

@Override

public void handleMessage(Message msg){

switch(msg.what){

case MSG_NUMBER :

Toast.makeText(getApplicationContext(), "Messenger Service", Toast.LENGTH_SHORT).show();

break;

default :

super.handleMessage(msg);

}

}

}

 

제가 java에 대한 이해가 부족해서요 super.handleMessage(msg); 부분이 이해가 잘 안되서요

저 부분만 뚝 띄어와서 질문을 잘하고 있는지는 잘 모르겠습니다만,

1. 저걸 왜 해주는지 모르겠고,

2. super가 가르키는 것이 class IncomingHandler extends Handler 의 Handler 부모 클래스를 말하는 건가요, 아니면, IncomingHandler가 속해 있는 MessengerService나 Service 클래스를 말하는 걸까요?

너무 초보적인 질문인거 같지만;; 답변 부탁드립니다.

익명사용자 님이 2019년 1월 2일 질문

1개의 답변

0 추천

super는 IncomingHandler 의 부모클래스인 Handler를 가르칩니다.

Handler 클래스의 handleMessage 를 @Override 할 경우

Handler 동작 중  handleMessage 가 불리는 시점에 Handler 클래스의 handleMessage 가 아닌

직접 구현하신 handleMessage 가 불립니다.

이 경우  직접 구현하신 handleMessage 내용만 수행 될 뿐, 

Handler 클래스의 handleMessage 에서 수행할 동작이 수행 되지 않기 때문에, 

직접 구현하신 handleMessage 의 동작을 수행 한 후 부모 클래스(Handler) 의 handleMessage 에서 수행할 동작을 수행하도록 불러주는 겁니다.

 

익명사용자 님이 2019년 1월 2일 답변
감사합니다!!!  도움이 됐습니다!!
...