• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

왜 main 함수 안에서 함수를 정의하면 오류가 나는 건가요?

20.02.29 00:31 작성 조회수 3.14k

0

static은 원래 main 함수 안에서 정의 하면 안 되는건가요?

왜 그러면 안 되나요? 

답변 1

답변을 작성해보세요.

0

김현지님의 프로필

김현지

2021.03.24

안녕하세요, 토마토님!

자바에서는 메소드를 중첩으로 정의하는 경우가 없습니다. (클래스는 중첩이 가능합니다.)

따라서 main 메소드 내부에서 메소드를 정의하는 경우는 특별한 경우에만 가능합니다.

public static void main(String[] args) {

      Comparator<Integer> compare = new Comparator<Integer>() {

            @Override

            public int compare(Integer o1, Integer o2) {

                  return o1 - o2;

            }

      };

}

위의 경우는 Comparator 인터페이스가 자바 표준 라이브러리에 포함되어있기 때문에 가능한 정의입니다.

이것 외의 사용자 정의 함수를 main 메소드 내부에 정의하려고 하면, 오류가 발생합니다.

따라서 main 메소드 외부에 메소드를 정의해준 후에 main 메소드에서 사용해주시면 됩니다.

  • static 메소드의 경우, main 메소드에서 클래스.메소드명 으로 사용할 수 있습니다.
    인스턴스 생성이 필요하지 않습니다.
  • 그 외의 메소드의 경우, 인스턴스를 생성해준 후에 사용할 수 있습니다.
    객체 생성 후 객체.메소드명 으로 사용할 수 있습니다.

혹시 궁금하신 점이 있다면 댓글 남겨주세요.

도움이 되었으면 좋겠습니다. :)