티스토리 뷰
package 키워드
자바에서는 클래스를 체계적으로 관리하기 위해 패키지(package)를 사용한다.
우리가 컴퓨터에서 폴더를 만들어서 파일을 저장 관리하듯이 패키지를 만들어 클래스를 저장하고 관리한다.
패키지는 클래스를 유일하게 만들어주는 식별자 역할을 한다. 클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식한다.
클래스의 전체이름은 패키지명 + 클래스명이다. ex) java.lang.String
패키지의 상위 하위를 구분짓는 방법은 도트(.)를 사용해서 구분한다.
패키지를 선언하는 방법은 간단하다.
package 패키지명
package 상위패키지.하위패키지
패키지 생성 규칙
- 숫자로는 시작해서는 안 되고. _,$를 제외한 특수문자를 사용해서는 안된다.
- java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용해서는 안된다.
- 모두 소문자로 작성하는 것이 관례이다.
Java의 패키지 유형
자바의 패키지 유형은 두 가지로 나눌 수 있다.
- JAVA API 패키지 또는 내장 패키지(Built in)
- 사용자 정의 패키지
사용자 정의 패키지는 사용자가 직접 패키지를 생성하는 것이고 내장 패키지라는 것은 자바가 실행될 때 기본적으로 import 해주는 패키지를 얘기한다.
java.lang 패키지는 자바 프로그램의 기본적인 클래스를 담고 있는 패키지이다. 그렇기 때문에 java.lang 패키지에 있는 클래스와 인터페이스는 import 없이 사용할 수 있다.
//import java.lang.String;
//import java.lang.System;
public class PackageExample {
public static void main(String[] args) {
System.out.println("Built-in Package");
}
}
java.lang 패키지말고도 util, io, awt, net, applet 이 있다.
- java.lang : 기본유형, 문자열, 수학 함수, 스레드 및 예외에 대한 클래스를 포함
- java.util : 벡터, 해시 테이블, 날짜, 달력 등과 같은 클래스를 포함
- java.io : 입출력을 위한 스트림 클래스를 포함
- java.awt : 그래픽 사용자 인터페이스를 구현하기 위한 클래스 포함
- java.net : 네트워킹을 위한 클래스 포함
import 키워드
같은 패키지에 속하는 클래스들은 아무런 조건 없이 다른 클래스를 사용할 수 있지만 다른 패키지에 속하는 클래스를 사용하려면 import 키워드를 사용해야 한다.
import 문을 쓰지 않고도 다른 패키지의 클래스를 사용하려면 해당 클래스의 패키지명을 붙여서 작성해야되지만 작성하기도 불편하고 가독성도 많이 떨어진다.
import 문을 사용하면 클래스 이름에서 패키지명은 생략할 수 있다.
import 문의 역할은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것이다.
import 문의 개수는 제한이 없고 필요한 패키지가 있다면 얼마든지 추가할 수 있다.
주의할 점은 import 문으로 지정된 패키지의 하위 패키지는 import 대상이 아니다.
import com.mycompany.*;
import com.mycompany.project.*;
mycompany 의 패키지에 있는 클래스도 사용해야하고 mycompany.project 패키지에 있는 클래스도 사용해야 한다면 위와같이 두개의 import문이 필요하다.
static import
import 문을 사용하면 클래스의 패키지명을 생략할 수 있는 것과 같이 static import 문을 사용하면 static 멤버를 호출할 때 클래스 이름을 생략할 수 있다. 특성 클래스의 static 멤버를 자주 사용할 때 편리하다.
import org.assertj.core.api.Assertions;
void test(){
assertThat(); //Assertions의 static 메소드
}
클래스패스
클래스패스(classpath)는 컴파일러(javac.exe)나 JVM 등이 클래스의 위치를 찾는데 사용되는 경로이다.
클래스패스를 설정하지 않았으면 디폴트로 현재 경로를 바라본다.
IDE (Intellij) 에서도 클래스패스를 알려주는 곳이 바로 Project Structure 이다.
Mark as 에서 Source Folders나 Resources Folder 설정등으로 인텔리제이에게 클래스패스 파일 경로를 알려준다.
CLASSPATH 환경변수
CLASSPATH 환경변수는 JVM이 시작될 때 JVM의 클래스 로더가 이 환경 변수를 호출한다고 한다.
JAVA_HOME만 설정해서 사용하고있는데 CLASSPATH 환경 변수가 뭔지는 잘 모르겠네;
나의 환경설정 같은 경우 Homebrew를 통해서 Java를 설치한 다음에 jenv로 자바의 버전관리를 하고있다.
사용하면서 문제는 없었던거 같은데 CLASSPATH에 관해서 조금 더 조사해봐야 할 것 같다.
-classpath 옵션
접근제어자 (access modifier)
접근 제어자는 public, protected, default, private와 같이 네 가지 종류가 있다.
private 접근 제어자
-
priavate으로 선언한 멤버는 외부에서 직접 접근할 수 없다.
-
priavate으로 선언된 멤버는 해당 객체의 public 메소드를 통해서만 접근 가능
public 접근 제어자
-
public으로 선언된 클래스 멤버는 어디에서나 직접 접근 가능
-
자바 프로그램은 public 메소드를 통해서만 해당 객체의 private 멤버에 접근 가능 (getter, setter)
default 접근 제어자
- 접근제어자가 지정되어 있지 않은 경우 자동으로 default 접근 제어자를 가진다.
- default 접근 제어자를 가진 멤버는 같은 클래스의 멤버와 같은 패키지에서만 접근 가능
protected 접근 제어자
- protected 멤버는 부모 클래스에 대해서는 public 멤버처럼 취급되고, 외부에서는 private 멤버로 취급된다.
- 같은 패키지 내에서는 모두 접근 가능
- 다른 패키지에서 해당 클래스를 상속받은 자식 클래스만 접근이 가능
출처
www.yes24.com/Product/Goods/24259565?OzSrank=2
www.yes24.com/Product/Goods/15651484
docs.oracle.com/javase/tutorial/java/index.html
- Total
- Today
- Yesterday
- maven
- Bash tab
- JavaScript
- Spring Security
- svn
- localtime
- elasticsearch
- Kotlin
- Java
- LocalDateTime
- Linux
- jQuery
- 오라클
- k8s
- oracle
- 북리뷰
- window
- Mac
- LocalDate
- 베리 심플
- intellij
- mybatis
- Spring
- docker
- input
- config-location
- rocky
- Github Status
- springboot
- mybatis config
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |