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

안드로이드 class에서 다른 class의 메소드 상속받아 사용하기 질문입니다.

0 추천

제목과 똑같은데요

MainActivity에서 구현한 class 의 method를 다른 class에서 상속받아서 쓰고있는데요 예를들어서

@MainActivity


public void send(){


}

// send메소드를

@OtherClass

class main extends MainActivity{
}

main.send();

이렇게 쓰고있는데 지나가다 본말로는 MainActivity를 계속해서 생성하면 안좋다고 들었는데

상속은 상관이없을거같아 이렇게쓰고있는데 맞는지요??

 

 

언제나 답변해주셔서 감사합니다 ^^ 좋은하루되세요.

gsm2055 (260 포인트) 님이 2016년 9월 12일 질문
답변을 달아 드리고 싶은데 무슨 말씀이신지 모르겠습니다. -_-ㅋ 이해하기 쉽게좀 설명해 주세욤
MainActivity의 메소드들을 다른 class에서 쓰고싶은데요
그걸 위에 쓴 otherclass처럼 상속시킨다음에 쓰면 리소스에 문제가 없는지 궁금한 점입니다!
OOP에서는 가능하면 dependency를 줄이는 loose coupling 형태로 개발하도록 하는 편이 단위테스트에도 좋고 유지보수에도 유리합니다. MainActivity에 너무 많은 기능을 고정하지 마시고 인터페이스나 추상클래스로 그 기능을 담아서 사용하는 형태로 구현하시는 것이 훨씬 좋은 패턴입니다. MVP나 MVVM같은 패턴을 한편 살펴보시기 바랍니다.

2개의 답변

0 추천
상속 개념은 리소스와는 상관없습니다. 부모의 속성을 그대로 가져오기때문에 부모가 가지고 있는 함수에 오버헤드가 있다면 자식도 똑같이 오버헤드가 있는것이죠.

자주쓰이는 속성의 경우는 한 부모클래스로 묶으면 유지보수하기 편하지만 쓸데없는 상속관계 남용은 오히려 독이 될수가 있습니다.
Development Guy (70,570 포인트) 님이 2016년 9월 13일 답변
0 추천
모든 액티비티에서 동일하게 사용되어야 하는 기본기능이라면

Activity를 상속받는 BaseActivity를 하나 만들어서 기능들을 구현하고

앱에서 사용하는 모든 Activity에 BaseActivity를 상속받는 방법은 좋습니다.

 

그러나, 만약에 특정 함수 하나만 이용하기 위해 특정 액티비티를 상속받는다면

잘못된 방법이 맞습니다.

만약에 send 라는 함수가 MainActivity와는 종속성이 없이 인자로 받은 값을 특정 URL로 전달하는

함수라고 한다면 네트웤 관련 기능들을 묶은 클래스에 존재해야 하며,

MainActivity에서는 해당 클래스를 생성해서 send 기능을 사용해야 합니다.
바램 (19,650 포인트) 님이 2016년 9월 13일 답변
...