953061688145744
Park Hansu
  • 2016.6.16 15:46
  • 조회수 88
  • 답변수 1
953061688145744
Park Hansu
  • 2016.6.16 15:46
  • 조회수 88
  • 답변수 1

이전 강의에서 인스턴트화 하지 않고 메소드를 사용한 적이 있나요?

이번 강의 내용이 어렵네요ㅜㅜ

이전 강의에서 인스턴트화 하지 않고 메소드를 사용한 적이 있나요?

static에 대해 설명해주실 때,
"지금까지 클래스를 정의하고 해당 클래스를 new하지 않았음에도 메인 메소드가 실행되었던 비밀입니다."
라고 말씀해주셨는데 이전 강의 어느 부분에 해당하는 것이고, 어떤 의미인지 모르겠습니다ㅜㅜ

*지금까지 예제를 생성할 때 자동으로 적혀있는 부분을 말씀하시는 건가요?
public static void main(String[] args){ }

  • #자바 입문
  • #변수의 scope와 static

1 답변

  • G3rlasealonpd5c2kica
    Demi
    • 2016.6.16 16:16

    public static void main(String[] args){ } 를 의미하는것이 맞습니다.
    이때까지 강의에서 정의했던 모든 메소드들은, 메소드를 실행하기 위해서는 (1)클래스 인스턴스를 생성하고, (2) 인스턴스를 통해 클래스를 호출하는 방식이었는데요.
    생각해보면 main도 메소드인데, main 메소드에 대해서는 이렇게 하신 적이 없으시죠?

    다음 코드를 보시고 이해가 안된다면 다시 댓글 달아주세요.

    class CodeRunner{
        // 직접 정의한 메소드 myPrint
        public void myPrint(){
            System.out.println("안녕!");
        }
        public static void main(String[] args){
            /* myPrint 메소드를 호출하기 위해서는 CodeRunner 클래스에
            인스턴스를 생성하고,
            인스턴스에 점을 찍어 myPrint에 접근합니다 */
            CodeRunner codeRunner = new CodeRunner(); // 인스턴스 생성
            codeRunner.myPrint(); // 메소드 호출
    
            /*그런데 메인 메소드는 메인메소드를 위해 따로 인스턴스를 생성한 적이 없고,
            또 codeRunner.main() 과 같이 메소드를 호출한 적도 없습니다*/
        }
    }
    
    

    • 말씀하신대로 생각해보니 '메인 메소드'도 '메소드'였군요! 전혀 인식 못 하고 있었네요. 답변해주신 덕분에 명쾌해졌습니다. 감사합니다! :)-Park Hansu
      2016.6.16 16:25
    • 강의를 몰아보면서 많은 질문을 남기고 있는데, 매 질문에 이렇게 빠르고 친절하게 답변을 해주셔서 정말 감사드립니다!-Park Hansu
      2016.6.16 16:26

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.