패키지 내에 클래스, 인터페이스를 포함시킬 수 있고, 관련된 클레스끼리 그룹 단위로 묶어 효율적 관리 가능.
같은 이름의 클래스도 다른 패키지에 존재할 수 있다.
물리적으로 하나의 디렉토리를 말한다.
패키지 선언
패키지 선언문은 반드시 소스파일에서 주석과 공백을 제외한 첫 번째 문장이어야 한다.
하나의 소스파일에 단 한번만 선언 가능.
패키지 선언을 안할시 자바에서 기본 제공하는 unnamed package로 포함된다.
import
import문을 통해 사용할 패키지를 미리 명시해 주면 소스코드에서 패키지명을 생략 할 수 있다.
import문은 package문 다음, 클래스 선언 이전에 명시해 주어야 한다.
제어자
제어자
접근 제어자와, 그외의 제어자로 분류
접근제어자 - public, protected, default, private 그 외 - static, final, abstract, native ...
static
클래스의, 공통적인 의 의미를 가지고 있다.
멤버변수, 메서드, 초기화 블럭에 사용
final
클래스, 메서드, 멤버변수, 지역변수에 사용가능.
변수에 사용하면 값을 변경할 수 없는 상수가 되고, 메서드에 사용하면 오버라이딩 할 수 없게 되고, 클래스에 사용하면 자손클래스를 정의하지 못하게 된다.(조상이 될 수 없다)
final이 붙은 변수는 일반적으로 선언과 초기화를 동시에 하지만, 선언에서 초기화를 하지 않고 생성자를 통해 단 한번만 초기화 하는것이 가능.
abstract
수행내용을 구현하지 않은 추상 메서드를 선언하는데 사용, 클래스, 메서드에서 사용가능
클래스에 사용 시 추상 메서드가 클래스 내에 있음을 알림, 메서드에 사용시에는 구현부가 작성되지 않은 추상 메서드임을 알림.
접근 제어자
public - 접근 제한 x
protected - 같은 패키지, 다른패키지의 자손 클래스에서 접근 가능
default - 같은 패키지 내에서만 접근가능
private - 같은 클래스 내에서만 접근가능
접근 제어자의 활용
클래스나 멤버에 사용하는 접근제어자는 클래스 내부에 선언된 데이터 보호를 위해 활용한다(캡슐화)
데이터가 유효한 값을 유지, 비밀번호와 같은 데이터를 외부로부터 변경하지 못하게 외부의 접근을 제한한다.
// 클래스에 final을 붙여 상속할 수 없는 클레스임을 알림.
public final class Singleton{
...
//클래스 내 객체 생성
private static Singleton s = new Singleton();
///private제어자를 통해 클래스 외부에서 기본 생성자를 통한 객체 생성 제한.
private Singleton(){ ... }
//getInstance메서드를 통해 외부에서 객체 s 활용
public static Singleton getInstance(){
return s;
}
}