[백기선 자바] 패키지

[백기선 자바] 패키지

작성일자
Jul 13, 2023
태그
SUB PAGE
프로젝트
백기선 자바
책 종류

[자바 라이브 스터디] 7주차 - 패키지

1. package 키워드

  • 정의) 서로 관련된 클래스들을 그룹 단위로 묶어 놓는 폴더 개념
    • 물리적으론 클래스 파일을 포함하는 하나의 디렉토리
  • 특징)
    • 클래스 또는 인터페이스를 포함시킬 수 있음
    • 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재 가능함
      • 클래스의 실제 이름(full name)은 패키지명을 포함한 것이기 때문
      • 예시) String클래스의 FQCN → java.lang.String
    • 하나의 소스파일은 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용함
      • 예시) package java.lang;
      • 패키지를 선언하지 않으면 이름 없는 패키지에 속하게 됨
    • java 언어 자체의 패키지는 java. 혹은 javax. 로 시작함
    • 패키지명은 대소문자 모두 허용하지만, 클래스명과 쉽게 구분하기 위해 소문자로 하는 것을 원칙으로 함
    • 일반적으로 회사들은 패키지 이름 시작하기 위해 반전된 도메인 이름을 사용함
      • 이때, 도메인 이름이 유효한 패키지 이름이 아니라면 언더바(_)를 사용하는 게 관례임
      • 예시)
        • 도메인 이름
          패키지 이름
          example.com
          com.example
          hyphenated-name.example.org
          org.example.hyphenated_name
          example.int
          int_.example
          123name.example.com
          com.example._123name

2. import 키워드

  • 정의) 다른 패키지의 클래스 사용할 때 사용
  • 특징)
    • 컴파일러가 import문을 통해 소스파일에 사용된 클래스들의 패키지 알아내고 패키지명을 클래스 이름 앞에 붙여줌
    • package문클래스 선언 사이에 위치함
      • import 패키지명.클래스명;
      • import 패키지명.*;
        • 패키지에 속하는 모든 클래스 import
        • 하위 패키지의 클래스는 포함x
    • import문 vs static import문
      • import문 → 클래스의 패키지명 생략 가능
      • static import문 → static 멤버변수/함수의 클래스명 생략 가능
        • import static 패키지명.클래스명.멤버변수/함수명;
        • import static 패키지명.클래스명.*;
        • 예시) QueryDSL 사용 시 QClass import할 때
          • notion image
          • import문 사용 시
            • 다른 방법
          • static import문 사용 시
      • import java.lang.*; 는 모든 소스파일에 묵시적으로 선언되어 있음

    3. 클래스패스

    • 정의) 컴파일러(javac.exe)나 JVM 등이 클래스의 위치를 찾는데 사용되는 경로
    • 특징)
      • ‘;’ 구분자로 여러 개 경로 지정 가능
    • 방식)
      • CLASSPATH 환경변수 사용
        • 컴퓨터 시스템 변수 설정을 통해 지정해서 사용 가능
          • 이 방식으로 클래스패스를 따로 지정해줄 땐 더 이상 현재 디렉토리가 자동으로 클래스패스로 지정되지 않기 때문에 별도로 추가해줘야 함.
      • 실행 시에 -classpath(-cp) 옵션 사용
        • java -classpath C:\Java\hi com.example.test 와 같이 사용 가능

    4. 접근지시자

    • 정의) 멤버 또는 클래스에 사용해, 외부에서 이들에 접근하지 못하도록 제한
    • 특징)
      • 사용 범위
        • 제어자
          같은 클래스
          같은 패키지
          자손 클래스
          전체
          public
          o
          o
          o
          o
          protected
          o
          o
          o
          x
          (default)
          o
          o
          x
          x
          private
          o
          x
          x
          x
      • 사용 대상
        • 대상
          사용 가능한 접근 제어자
          클래스
          public, (default)
          메서드, 멤버변수
          public, protected, (default), private
          지역변수
          x
    • 참고
      • 자바의 정석 (남궁성 지음)
    [백기선 자바] 패키지