프로그램의 많은 클래스를 관리하기 위한 시스템
물리적으로 클래스 파일을 담고 있는 디렉터리
이름은 의미있는 이름으로 만들고 .을 통해 계층적 접근
package name + class name으로 클래스 구분 -> fully qualified name
선언
첫 문장에 하나의 패키지만 선언
모든 클래스는 반드시 하나의 패키지에만 속함
네이밍 룰
소속.프로젝트.용도
import
다른 패키지에 선언된 클래스를 사용하기 위한 키워드
패키지와 클래스 선언 사이에 위치
import한 패키지의 클래스 이름이 동일하여 명확이 구분해야 할 때, 클래스 이름 앞에 전체 패키지명을 입력
java.util.List list1;
java.awt.List list2;
tip
자주 쓰는 패키지의 클래스는 작성 후 ctrl+space를 누르면 쉽게 추가 가능
혹은 static import로 자주 사용되는 static member를 등록
제한자
선언부에 함께 사용되어 부가적인 의미 부여
접근 제한자 : public, protected, (default = package), private)
그 외 제한자 : static, final, abstract, synchronized
접근 제한자는 하나만, 나머지는 제한은 없음.
usage modifier class variable method static X(inner class만 가능) O(class.variable) O(class.method) final O(상속금지) O(값 변경x) O(override 금지) abstract O(객체로 생성 금지) X O(구현 금지)
final
더 이상 상속을 못하게 막는 것
final class : 더 이상 확장 불가능 -> 상속 금지
final method : 더 이상 재정의 불가능 -> overriding 방지
final variable : 더 이상 값을 바꿀 수 없음(상수)
blank final : 값이 할당되지 않은 멤버 변수. 객체가 생성 되면 변경할 기회가 없기 때문에 *반드시 생성자에서 초기화*
class{
String name;
final bloodType; // <-- blank final 값. 생성자에서 초기화 필수
}
static final : 객체와 무관하게 공유되는 상수 값
접근제한자
제한자 | 용도 | 접근 가능 범위 | |||||
클래스 | 생성자 | 멤버 | 같은 클래스 | 같은 패키지 | 다른 패키지의 자손 클래스 | 전체 | |
public | O | O | O | O | O | O | O |
protected | O | O | O | O | O | ||
package (default) |
O | O | O | O | O | ||
private | O | O | O |
'JAVA' 카테고리의 다른 글
[Java] Polymorphism (0) | 2024.01.18 |
---|---|
[Java] Encapculation (0) | 2024.01.18 |
[Java] Inheritance : 상속 (0) | 2024.01.17 |
[Java] Constructor : 생성자 (0) | 2024.01.17 |
[Java] Abstraction (0) | 2024.01.16 |