패키지의 선언
정의 :
1. 패키지는 소스파일에 첫 번째 문장으로 단 한번 선언한다.
2. 하나의 소스파일에 둘 이상의 클래스가 포함된 경우 , 모두 같은 패키지에 속하게 된다 ( 하나의 소스파일에 단 하나의 public 클래스만 허용된다 )
3. 모든 클래스는 하나의 패키지에 속하며 , 패키지가 선언되지 않은 클래스는 자동적으로 이름없는 (unnamed)패키지에 속하게 된다.
설명서
패키지는 키워드 package를 사용해서... 소스파일의 첫 번째 문장에 단 한번만 선언할 수 있습니다.
그리고 이 소스파일에 선언된 클래스는 모두 같은 패키지에 속하게 됩니다.
왼쪽의 코드에 보면... PackageTest.java라는 소스파일에... 주석을 제외한 첫번째 문장에 패키지를 선언하였고요.
그 아래에 두 개의 클래스 PackageTest와 PackageTest2가 선언되어 있는데요.
이 두 클래스 모두 com.javachobo.book이라는 패키지에 속하게 됩니다.
이처럼 하나의 소스파일에 둘 이상의 클래스를 선언하는 경우에는
단 하나의 public클래스만 선언할 수 있습니다.
그래서 PakcageTest2에는 public을 붙일 수 없고요...
또 한가지 지켜야할 규칙은 소스파일의 이름은 public클래스의 이름과 일치해야한다는 것입니다.
그래서 소스파일의 이름이 public클래스의 이름인... PackageTest.java로 했습니다.
만일 두 클래스 모두 public을 붙여야 한다면... 각각 다른 소스파일에 작성해야 합니다.
둘 다 public이 안붙어 있다면... 소스파일의 이름은 둘 중의 어느쪽 클래스의 이름으로 해도 괜찮습니다.
public은 접근제어자입니다.
javac의 d옵션을 사용하면 소스파일에 선언된 패키지구조를 지정된 경로에 자동적으로 생성해줍니다.
여기서는 현재폴더를 의미하는 점을 경로로 지정해주어 컴파일 하였습니다.
그러니까... 오른쪽과 같이... 현재폴더인 work아래에 패키지 구조에 맞게 폴더들이 자동적으로 생성되고...
그 안에 PackageTest클래스파일이 생성되었습니다.
만일 d옵션을 사용하지 않고 컴파일하면... 클래스파일만 생성되고...
패키지폴더들은 생성되지 않기 때문에 직접 만들어 주어야 합니다.
모든 클래스는 반드시 하나의 패키지에 속해야 합니다.
그런데도 지금까지... 패키지를 지정하지 않고도 문제가 없었던 것은...
패키지를 지정하지 않으면... 자동적으로 이름없는 패키지에 속하게 되기 때문입니다.
그렇게 함으로써 모든 클래스는 반드시 하나의 패키지에 속해야 한다는 원칙을 지키게 되는 것이죠.
그래서 패키지를 지정하지 않은 클래스들은 모두 같은 패키지에 속하게 되겠죠.
'Backend > java' 카테고리의 다른 글
클래스패스 설정 하기2 (0) | 2018.08.12 |
---|---|
클래스 패스 설정하기 (0) | 2018.08.12 |
패키지(Package)의 정의 (0) | 2018.08.12 |
Super의 메서드사용 (0) | 2018.08.09 |
Super의 정의 (0) | 2018.08.09 |
#IT #먹방 #전자기기 #일상
#개발 #일상