본문 바로가기

JAVA

[Java] Package

프로그램의 많은 클래스를 관리하기 위한 시스템

물리적으로 클래스 파일을 담고 있는 디렉터리

이름은 의미있는 이름으로 만들고 .을 통해 계층적 접근

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