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

초보 문법 질문입니다.

0 추천
// Thread 클래스

    class CountThread extends Thread implements Runnable {

         

        private boolean isPlay = false;

         

        public CountThread() {

            isPlay = true;                                                                    1

        }

         

        public void isThreadState(boolean isPlay) {

            this.isPlay = isPlay;                                                            2

        }

         

        public void stopThread() {

            isPlay = !isPlay;                                                               3

        }

제가 자바 문법에 대한 기초가 없어서요.

위 소스를 보다가 궁금한게 있어서요. 왜 2번 isThreadState 메소드에서만 this. 을 쓸까요???

3메소드와 무슨 차이 때문에 저렇게 하는지 모르겠습니다.

1번메소드 CountThread()는 초기화 때문에 그런가 하고 그냥 넘어갔는데 왜 그럼 3번메소드 stopThread()는

this를 안쓰는거죠? 2번은 썼는데요
익명사용자 님이 2018년 12월 11일 질문
답변 감사합니다 도움이 되었습니다. 감사해요

4개의 답변

0 추천
답을 드리기보다는 힌트를 드리는게 나을거 같아서 쓸게요

1, 2 비교를 하면 this의 의미를 알 수 있음

3. ! <-- 의 의미를 알면 알 수 있음
평범 (3,560 포인트) 님이 2018년 12월 11일 답변
0 추천
2 : "boolean isPlay" 변수(함수 인자)가 'isPlay' 변수명을 선점하고 있어서 그렀습니다.

3. 3번 메소드에는 변수명을 선점한 함수 인자가 없으니깐요.
디자이너정 (42,810 포인트) 님이 2018년 12월 11일 답변
0 추천
디자이너정님 답변에 조금더 상세한 설명 붙여드리자면.

2번 메소드는 함수 호출시 들어오는 매개변수의 명이

 * public void isThreadstate(boolean isPlay) -> 괄호안의 내용이 함수 호출시 들어오는 '매개변수'라고 합니다. boolean 타입의 isPlay라는 이름으로 들어온다는 말.

클래스에서 선언된 private boolean isPlay 와 이름이 isPlay로 같죠

그렇다면 isThreadstate메서드 내에서는 변수명(isPlay)만 적어줬을때엔 매개변수로 우선인식 합니다.

This를 붙여주면 클래스에 선언되어 있는 isPlay변수에 접근할 수 있는 것이구요.

 

다른 1,3메서드의 경우에는 메서드 옆에 괄호가 비어있기 때문에 호출시 매개변수가 필요하지 않고, isPlay라는 변수명을 사용한다면 자연스레 클래스의 변수에 접근하기 때문에 this가 필요하지 않는겁니다.
슬로스 님이 2018년 12월 11일 답변
2018년 12월 12일 수정
0 추천
감사합니다. 도움이 되었습니다. 답변 감사드립니다.
익명사용자 님이 2018년 12월 14일 답변
...