[도서/자바의 신] #9 자바를 배우려면 패키지와 접근 제어자는 꼭 알아야 해요

2022. 12. 21. 16:18·Book/자바의 신
728x90
반응형

자바의 신

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 


패캐지는 그냥 폴더의 개념이 아니에요

패키지(package)는 클래스들을 구분짓는 폴더와 비슷한 개념이다.

자바 파일을 컴파일 할 때 슬래스로 각 패키지를 구분한 후 자바 소스 이름을 지정하여 컴파일이 가능하다.

그리고 항상 컴파일할 때는 가장 상위 디렉터리, 즉 root 디렉터리에서 실행을 해야만 한다.

 

패키지 선언문

package 상위 패키지.하위 패키지;
  • 소스의 가장 첫 줄에 위치해야 한다.
  • 패키지 선언은 소스 하나에는 하나만 있어야 한다.
  • 패키지 이름과 위치한 폴더 이름이 같아야 한다.
  • 패키지 이름을 java로 시작해서는 안된다.

패키지 이름은 이렇게 지어요

기본 규칙

패키지 시작 이름 내용
java 자바 기본 패키지(Java 벤더에서 개발)
javax 자바 확장 패키지(Java 벤더에서 개발)
org 일반적으로 비 영리단체(오픈 소스)의 패키지
com 일반적으로 영리단체(회사)의 패키지

패키지 이름은 모두 소문자로 지정하는 것이 좋고, 자바의 예약어를 사용하면 안된다.

import를 이용하여 다른 패키지에 접근하기

다른 패키지에 있는 클래스를 사용하려면 import를 해줘야 한다.

import 패키지 이름.클래스이름;

컴파일하면 import한 클래스를 먼저 컴파일하고 호출하는 클래스를 컴파일해준다.

클래스 이름 대신 "*"를 써주면 해당 패키지에 있는 모든 클래스들을 import해준다.

다만, 패키지 내의 클래스만 import하고 패키지 내의 하위 패키지에 선언된 클래스들은 import하지 않는다.

 

import한 클래스 내의 static 변수와 메소드를 사용하기 위해서는 "import static 패키지이름.클래스이름.static변수나 메소드 명;"을 해주면 된다. 물론 "*"을 이용해 모든 static한 변수나 메소드를 import해줄 수도 있다. 

또 다른 방법으로는 사용할 static 변수나 메소드 앞에 "클래스이름."을 써주면 된다.

 

import를 하지 않아도 되는 패키지

  • java.lang.패키지
  • 같은 패키지

자바의 접근 제어자

접근 제어자(Access modifier)

  • public : 누구나 접근 가능
  • protected : 같은 패키지 내에 있거나 상속받은 경우에만 접근
  • package-private : 아무런 접근 제어자를 적어주지 않을 때 설정되는 접근 제어자로, 같은 패키지 내에 있거나 해당 클래스 안에 있을 때만 접근 가능
  • private : 해당 클래스 내에서만 접근 가능
  해당 클래스 안 같은 패키지 상속 받은 클래스 import한 클래스
public O O O O
protected O O O X
package-private O O X X
private O X X X

메소드나 변수의 접근 권한을 지정하여 값의 변경이나 조회를 제어해주는데 접근 제어자가 사용된다.

클래스 접근 제어자 선언할 때의 유의점

접근 제어자는 메소드와 인스턴스 변수, 클래스 변수뿐만 아니라 클래스 선언문에도 사용된다.

클래스 선언시 반드시 파일 이름에 해당하는 클래스가 존재해야 한다.

같은 클래스 내에선 public 클래스가 둘 이상 존재할 수 없다.

public인 클래스가 존재한다면 이름이 파일의 이름과 같아야 컴파일된다.


정리해 봅시다

1. 패키지를 선언할 때 사용하는 예약어는 무엇인가요?

package

2. 패키지 선언은 클래스 소스 중 어디에 위치해야 하나요?

맨 위

3. 패키지를 선언할 때 가장 상위 패키지의 이름으로 절대 사용하면 안 되는 단어는 무엇인가요?

java

4. 패키지 이름에 예약어가 포함되어도 되나요?

NO

5. import는 클래스 내에 선언해도 되나요?

NO

6. 같은 패키지에 있는 클래스를 사용할 때 import를 해야 하나요?

NO

7. 특정 패키지에 있는 클래스들을 모두 import할 때 사용하는 기호는 무엇인가요?

패키지 이름 뒤에 .*를 붙여주면 된다.

8. 클래스에 선언되어 있는 static한 메소드나 변수를 import하려면 어떻게 선언해야 하나요?

import static 패키지이름.클래스이름.static한 메소드나 변수 이름;을 해주면 된다.

9. 접근 제어자 중 가장 접근 권한이 넓은 (어떤 클래스에서도 접근할 수 있는) 것은 무엇인가요?

public

10. 접근 제어자 중 가장 접근 권한이 넓은 (어떤 클래스에서도 접근할 수 있는) 것은 무엇인가요?

private

11. 접근 제어자 중 같은 패키지와 상속 관계에 있는 클래스만 접근할 수 있도록 제한하는 것은 무엇인가요?

protected

12. "Calculate.java"라는 자바 소스가 있을 경우, 그 소스 내에는 Calculate라는 클래스 외에는 (   )으로 선언된 클래스가 있으면 안된다.

public

728x90
반응형

'Book > 자바의 신' 카테고리의 다른 글

[도서/자바의 신] #11 매번 만들기 귀찮은데 누가 만들어 놓은 거 쓸 수 없나요?  (0) 2022.12.22
[도서/자바의 신] #10 자바는 상속이라는 것이 있어요  (0) 2022.12.21
[도서/자바의 신] #8 참조 자료형에 대해서 더 자세히 알아봅시다  (0) 2022.12.21
[도서/자바의 신] #7 여러 데이터를 하나에 넣을 수는 없을까요?  (1) 2022.12.21
[도서/자바의 신] #6 제가 조건을 좀 따져요  (0) 2022.12.20
'Book/자바의 신' 카테고리의 다른 글
  • [도서/자바의 신] #11 매번 만들기 귀찮은데 누가 만들어 놓은 거 쓸 수 없나요?
  • [도서/자바의 신] #10 자바는 상속이라는 것이 있어요
  • [도서/자바의 신] #8 참조 자료형에 대해서 더 자세히 알아봅시다
  • [도서/자바의 신] #7 여러 데이터를 하나에 넣을 수는 없을까요?
yulee_to
yulee_to
  • yulee_to
    yulee
    yulee_to
  • 전체
    오늘
    어제
    • 전체 글 (170)
      • CS (2)
        • OS (0)
        • DB (0)
        • Network (2)
      • Develop (1)
        • Spring (9)
        • Java (12)
        • Python (0)
        • Algorithm (0)
        • 기타 (0)
      • PS (39)
        • C++ (39)
        • Java (0)
      • TIL (61)
      • Book (39)
        • 자바의 신 (32)
        • 스프링 입문을 위한 자바 객체 지향의 원리와 이해 (7)
      • ETC (4)
        • Blog (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    부트캠프후기
    1일1백준
    EC2
    에스넷시스템
    aws
    스프링 입문
    에스넷시스템 부트캠프
    C++
    알고리즘
    TiL
    Java
    자바
    클라우드 활용 네트워크 엔지니어 부트캠프
    멀티캠퍼스it부트캠프
    백준
    자바의 신
    객체지향
    boj
    스터디
    GodOfJava
  • 최근 댓글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
yulee_to
[도서/자바의 신] #9 자바를 배우려면 패키지와 접근 제어자는 꼭 알아야 해요
상단으로

티스토리툴바