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

@override의 적용 범위가 어디까지인가요?

0 추천

안녕하세요 안드로이드를 만지기 시작한지 얼마 안된 학생입니다.

 

비콘을 이용해서 어떤 프로젝트를 하려고 하는데요. 비콘 회사에서 주어준 SDK를 사용하고 있습니다.

제가 어떤 method를 추가하려고 하다 보니 @override에 의해서 주어진 형식을 따라야한다고 

에러가 났습니다.

Error:(51, 8) error: RECOMonitoringActivity is not abstract and does not override abstract method didEnterRegion(RECOBeaconRegion,Collection<RECOBeacon>) in RECOMonitoringListener

문득 이 구문을 보고 궁금한 점이 override의 적용범위가 어떻게 되나요?

override가 부모 클래스에 지정되어 있던 추상메소드를 가져와서 재정의한 후에 사용하는 것으로 알고 있는데요

이 클래스의 부모 클래스인 RECOActivity에는 didEnterRegion이라는 내용이 없습니다.

그렇다면 RECOActivity 클래스의 부모 클래스에서 이 didEnterRegion을 찾아야하는 것인가요?

또 원래 알기로 굳이 override를 사용하지 않아도 method 선언을 할 수 있는 것으로 아는데요?

도움을 주시면 감사하겠습니다.

nanapig94 (240 포인트) 님이 2015년 7월 30일 질문
왠만하면 자바기초는 잡고 가시는것을 추천합니다. 일주일이면 기본문법 다 잡고
이주일이면 객체지향 이해할 수 있습니다. 한달이면 각종 디자인패턴 이해할 수 있구요.
그런데 왜 안할까요?
제 노력이 부족한 부분이군요.. 죄송합니다. ㅠㅠ

2개의 답변

+1 추천
소스를 일부분이라도 올리신 후 질문하셨다면 더 정확한 답변을 얻을 수 있을 것 같네여

오류의 해석을 잘 못 하신듯 합니다.

RECOMonitoringActivity에서 RECOMonitoringListener 라는 추상 클래스를 사용하려고 하려면

didEnterRegion 이라는 추상 메소드를 반드시 구현하거나 RECOMonitoringActivity가 추상클래스여야 한다는 내용입니다.

추상클래스를 상속하는 경우 추상메소드는 재정의의 개념이 아닌 강제 구현입니다.

RECOMonitoringActivity에서 본인이 직접 RECOMonitoringListener 클래스를 상속한게 아니라면

RECOActivity가 상속하고 있을 겁니다. RECOActivity역시 추상 클래스일 것이구요

didEnterRegion은 RECOMonitoringListener 안에 정의되어 있을 겁니다.
Gradler (109,780 포인트) 님이 2015년 7월 31일 답변
답변해주셔서 감사합니다. 답변에서 질문이 있는데요.
추상 클래스를 상속하는 경우 추상메소드는 강제구현이라고 하셨는데요.
그럼 클래스 안에 있는 모든 method를 다시 자식 클래스에 구현을 해야한다는 것인가요?
아직까지 추상메소드, 추상클래스에 대한 개념이 제대로 잡혀있지 않은 것 같습니다.
그리고 답변 내용을 바탕으로 RECOMonitoringListener 클래스를 찾아봤는데 이곳에도 didEnterRegion이 정의되어 있지 않습니다. ㅠㅠ
혹시 import한 클래스가 override에 영향을 주는 것인가요?
사실 Handler 사용시에도 @override public run() 이런 형태를 사용하는 것에 기존에 가지고 있던 오버라이드 개념과 다른 것 같아서요......
답변 주시면 감사하겠습니다.
0 추천
소스를 안봐서 정확히 답변 드릴 수는 없지만, 에러 메시지 보면

RECOMonitoringListener에 didEnterRegion메소드가 있는 것 같은데요?

그냥 만들려는 메소드 명을 바꾸세요.
익명사용자 님이 2015년 7월 30일 답변
답변 잘 받았습니다. 답변에 대해 궁금한 점이 있는데요.
오류가 난 클래스 안에 implements RECOMonitoringListener 이렇게 되어 있는데요. 일단 RECOMonitoringListener라는 클래스 안에 didEnterRegion이 없습니다. ㅠㅠ
그리고 제가 알기로 overload라는 개념이 있고 이는 똑같은 메소드명을 가지고도 다른 parameter를 이용할 경우 메소드 정의가 가능한 것으로 알고 있는데요. 이부분에 대해서는 어떻게 생각하시나요. 제가 아직 개념이 제대로 잡힌 것 같지가 않아서 도움을 청합니다. ㅠㅠ
http://mclab.hufs.ac.kr/mediawiki/images/7/7f/2014_7%ED%8C%80_%EC%83%81%EC%84%B8%EC%84%A4%EA%B3%84%EC%84%9C.pdf
링크 확인해보세요 문서 23페이지 보면 didEnterRegion메소드 이미 존재하고 있습니다.
...