본문 바로가기

Java Programming

한개의 자바 파일 안에 여러개의 클래스???

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
자바 검은띠 문제를 풀던 도중에 이런 문항이 있었다. True of False 문제이다.

It is possible to have a Class A in file B.java?(A is not an inner class.)

B.java안에 Class A가 있을수 있냐고? 가차없이 False라고 적어서 패스 했다. (절대 틀리지 않을 줄 알았다.)

그뒤에 있는 문제를 보니 이렇게 된 문제도 있었다. 이 문제는 어떤 파일이름으로 저장해야 하는가? 라는 질문이었지만 머리속에서는 이미 저건 컴파일 자체가 안되는데 뭘.. 하고 답을 골를라 하니 이상했다 -_-; 컴파일 에러라는 답은 없었다.. 일단 맨 위에있는 클래스겠거니 X라고 덩그러니 적어 보았다.

class X {
  ......
}
public class Y {
  .......
}
class Z {
  .....
}
그리고 나에게 날라오는것은 틀렸다는 말..

광분했다. 난생 처음보는형식인데 어쩌라고!!!! -_-;; 왜 틀렸는지 이해를 못하다가 이클립스님 께서 잘되는데? 라고 답변을 해주시고 결과에 승복했다. 실제로 코딩을 해봤다.

Main.java


class Second {

}

public class Main {

      int a = 1;

     private void sayHello() {

            System.out.println("Hello");

      }

}

class Third {

      public static void main(String[] args) {

            Main object = new Main();

            System.out.println(object.sayHello());  //  Compile Error

      }

}


이런식으로 여러개의 클래스를 선언해도 무방했다. 컴파일 에러 따위는 없었다.

<오늘의 교훈>
한개의 자바 파일 안에 이너클래스가 아닌 여러개의 클래스가 존재할수 있다. 단, Public으로 선언된 클래스가 한개만 존재해야 하며 파일 이름은 Public으로 선언된 클래스 이름과 같아야 한다.

같은 파일 내에 있는 클래스라도 마찬가지로 private 으로 선언된 변수나 메소드는 다른 클래스에서 역시 사용할 수 없다.