패키지
- 클래스를 체계적으로 관리하기 위한 도구. 작성한 클래스들을 구분 짓는 폴더와 비슷함.
- 클래스들을 분류하지 않아 이름이 중복되거나 클래스의 기능이 혼동되는 상황 방
- 패키지의 물리적인 형태는 파일 시스템의 폴더이지만, 폴더의 기능만 하는 것이 아니라 클래스의 일부분임
패키지 선언문 : "package c.javapackage;"
- 소스의 가장 첫 줄에 있어야만함. package 선언 위에 주석, 공백은 상관없음. 하지만 다른 자바 문장이 있으면 컴파일 오류
- 패키지 선언은 소스 하나에는 하나만 있어야함. 소스 파일이 두개의 폴더에 한번에 존재할 수 없기 때문
- 패키지 이름과 위치한 폴더 이름이 같아야함.
패키지 이름 규칙
- java로 시작하면 안됨
- 모두 소문자로.
- 자바의 예약어x
*컴파일 할 때 javac c/javapackage/Package.java 처럼 /로 각 패키지를 구분하고, 자바 소스 이름을 지정해서 컴파일함.
import
- import 뒤에 패키지이름.클래스이름을 명시해주면, 그 패키지에 있는 클래스를 사용하겠다는 것을 컴파일러에게 알려줌.->컴파일러가 해당 클래스가 패키지 안에 있음을 알고 컴파일해줌.
- 패키지 안에 있는 모든 클래스를 import하고 싶은 경우 "import 패키지이름. *". 이때 *은 그 패키지에 선언된 클래스들만 import하고, 그 패키지의 하위 패키지에 선언된 클래스들은 import하지 않음.
package c.javapackage.sub.*; //c.javapackage.sub 패키지에 있는 모든 클래스 import
- import는 클래스 선언 전에 명시되어야함.
- 같은 패키지 내의 클래스와 java.lang 패키지에 있는 클래스는 별도로 import할 필요가 없음.
import static
- static한 변수(클래스 변수)와 static 메소드를 사용할 때 용이.
- import static 패키지이름.클래스이름. static한 함수 or 변수 이름;
- import static 패키지이름.클래스이름.*;도 가능
package c.javapackage;
//import c.javapackage.sub.Sub;
//import static c.javapackage.sub.Sub.subClassStaticMethod;
//import static c.javapackage.sub.Sub.CLASS_NAME;
import static c.javapackage.sub.Sub.*;
public class Package{
public static void main(String[] args){
//System.out.println("Package class.");
//Sub sub=new Sub();
//Sub.subClassStaticMethod();
//System.out.println(Sub.CLASS_NAME);
subClassStaticMethod();
System.out.println(CLASS_NAME);
}
}
접근 제어자
- public
- protected : 같은 패키지 or 상속받은 경우
- package-private : 접근 제어자 적지 않을 때. 같은 패키지 내에 있을 때만 접근 가능
- private : 클래스
public으로 선언된 클래스가 소스 내에 있다면, 소스파일 이름은 public인 클래스 이름과 동일해야만함. 한 소스파일 내에 public인 클래스가 두 개이면 안됨.
'Languages > Java' 카테고리의 다른 글
[Java] 형변환, 다형성 (0) | 2023.08.22 |
---|---|
[Java] 상속 (0) | 2023.08.22 |
[Java] 매개 변수 지정 (0) | 2023.08.19 |
[Java] Static과 Static 블록 (0) | 2023.08.11 |
[Java] 배열 (0) | 2023.08.11 |