
package ํค์๋๋ ํด๋์ค๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ๋๊ตฌ๋ก ํด๋์ค๋ค์ ๊ตฌ๋ถ์ง๋ ํด๋์ด๋ค. ํด๋์ค์ ์ด๋ฆ์ด ๋์ผํด๋ ํจํค์ง๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ํด๋์ค๋ก ์ธ์ํ๊ฒ ๋๊ณ ํจํค์ง ๋ด๋ถ์ ํจํค์ง๋ฅผ ๋๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
package study7.package;
public class className {
}
๊ฐ์ฅ ์ฒซ์ค package study7.package; ๊ฐ ํจํค์ง ์ ์ธ๋ถ์ด๊ณ ํด๋น์ด๋ฆ๊ณผ ํจํค์ง๊ฐ ์์นํ ํด๋์ ์ด๋ฆ์ด ๊ฐ์์ผ ํ๋ค.
-, $๋ฅผ ์ ์ธํ ํน์ ๋ฌธ์ ์ฌ์ฉ ๊ธ์งFQCK๋ object, ํจ์, ๋ณ์์ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ ํฌํจํ์ฌ ํํํ๋ ๊ฒ์ ๋งํ๊ณ Java์์ ์๋์ ๊ฐ์ด ํด๋น ํด๋์ค๊ฐ ์ํ ํจํค์ง๋ช ์ ๋ชจ๋ ํฌํจํ ์ด๋ฆ์ ๋งํ๋ค.
String s = new String();
// FQCN
java.lang.String s = new java.lang.String();
import๋ฌธ์ ์๋ฐ ์ปดํ์ผ๋ฌ ์ฝ๋์์ ์ฌ์ฉํ ํด๋์ค์ ํจํค์ง์ ๋ํ ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ์ ๊ณตํ๋ ์ญํ ์ ํ๋ค.
๋ค๋ฅธ ํจํค์ง์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํด๋์ค ์ด๋ฆ ์์ ํจํค์ง์ ๊ฒฝ๋ก๊น์ง ํฌํจํ ํ ๋ค์, ์ฆ FQCK๋ฅผ ๋ช ์ํด์ผ ํ๋ค. ํ์ง๋ง ํญ์ ๋ช ์๋ฅผ ํ๊ธฐ์ ์ฝ๋๊ฐ ๊ธธ์ด์ง๋ฏ๋ก import๋ฅผ ์ฌ์ฉํด ์ธ ํด๋์ค์ ํจํค์ง์ ๋ํ ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ๋ช ์ํ๋ ๊ฒ์ด๋ค.
import packageA.classA;
import packageA.classB;
import packageA.*;
import๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ธํ๋ค. packageA์ ํน์ ํด๋์ค๋ง ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ packageA.์ฌ์ฉํ ํด๋์ค์ด๋ฆ์ ์์ฑํ๊ณ packageA์ ๋ชจ๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด package.*๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
import java.packageA.*;
import java.packageB.*;
import java.*; // xxx
ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ํจํค์ง๋ค์ .*๋ก ํ๋ฒ์ importํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
(์ธํ
๋ฆฌ์ ์ด(์๋์ฐ)์์ ํด๋น ํด๋์ค๋ฅผ ์ฐพ์ง ๋ชปํด ๋นจ๊ฐ์ค์ด ๋ด์ ๋ Alt+Enter๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ผ๋ก ํด๋น import๋ฌธ์ ์์ฑํด์ค๋ค.)
๐ก java.lang
์์ FQCK๋ฅผ ์ค๋ช ํ ๋ ์ฌ์ฉํ์๋java.lang.String๊ฐ์ ๊ฒฝ์ฐ์๋ ํ์ ์ฌ์ฉํ ๋ ์๋ import๋ฅผ ๋ฐ๋ก ํ์ง ์์์์ ๊ฒ์ด๋ค. java.lang ํจํค์ง๋ import๋ฅผ ํ์ง ์์๋ ์ฌ์ฉํ ์ ์๋ค.
์ ๊ทผ์ ์ด์๋ ํด๋์ค, ๋ฉ์๋, ์ธ์คํด์ค ๋ฐ ํด๋์ค ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉ๋๋ค.
๊ฐ์ฒด ์งํฅ์์ ์ ๋ณด ์๋์ด๋ ์ฌ์ฉ์๊ฐ ์ ํ์ ์๋ ์ ๋ณด๋ฅผ ์จ๊ฒจ ์ต์ํ์ ์ ๋ณด๋ก ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ์ ๋ณด ์๋์ ์ํด ์ ๊ทผ์ ์ด์๋ฅผ ์ฌ์ฉํ๋ฉฐ ์๋ฐ์์๋ 4๊ฐ์ง์ ์ ๊ทผ ์ ์ด์, private, public, default, protected๋ฅผ ์ ๊ณตํ๋ค.
private๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ธ๋ ํด๋์ค ๋ฉค๋ฒ๋ ์ธ๋ถ์ ๊ณต๊ฐ๋ ์ง์๊ณ ์ธ๋ถ์์ ์ง์ ์ ๊ทผํ ์ ์๋ค. ์ค๋ก์ง ํด๋น ๊ฐ์ฒด์ public ๋ฉ์๋๋ฅผ ํตํด์๋ง ์ ๊ทผํ ์ ์๋ค.
๊ทธ๋์ ๋ณดํต private๋ public ์ธํฐํ์ด์ค๋ฅผ ์ง์ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์๋๋ผ ํด๋์ค ๋ด๋ถ์ ์ธ๋ถ์ ์ธ ๋์์ ๊ตฌํํ๋ค.

public์ ์ฌ์ฉํ์ฌ ์ ์ธํ ํด๋์ค ๋ฉค๋ฒ๋ ์ธ๋ถ๋ก ๊ณต๊ฐ๋๊ณ ํด๋น ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ด๋ผ๋ฉด ์ด๋์์๋ ์ ๊ทผํ ์ ์๋ค.
๋ํ private์์ ๋งํ๋ค์ํผ public๋ฉ์๋๋ฅผ ํตํด์๋ง ํด๋น ๊ฐ์ฒด์ private ๋ฉค๋ฒ์ ์ ๊ทผํ ์ ์๋ค.

default๋ฅผ ์ํ ์ ๊ทผ ์ ์ด์๋ ๋ฐ๋ก ์กด์ฌํ์ง ์์ผ๋ฉฐ ์ ๊ทผ ์ ์ด์๊ฐ ์ง์ ๋์ง ์์ผ๋ฉด ์๋์ผ๋ก ๊ฐ์ง๊ฒ ๋๋ค.
(๊ถ์ฅํ์ง์์ง๋ง ํ ์์ค ํ์ผ์ 2๊ฐ ์ด์์ ํด๋์ค๋ฅผ ์ ์ํ๋ ๊ฒฝ์ฐ์ ํ์ผ ์ด๋ฆ๊ณผ ๊ฐ์ ํด๋์ค๋ฅผ ์ ์ธํ ํด๋์ค๋ package-private๋ก ๊ฐ์ ํจํค์ง ๋ด์ ์๋ ํด๋์ค๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.)
default ์ ๊ทผ์ ์ด๋ฅผ ๊ฐ์ง๋ ๋ฉค๋ฒ๋ ๊ฐ์ ํด๋์ค์ ๋ฉค๋ฒ์ ๊ฐ์ ํจํค์ง์ ์ํ๋ ๋ฉค๋ฒ์์๋ง ์ ๊ทผํ ์ ์๋ค.

์๋ฐ ํด๋์ค๋ private ๋ฉค๋ฒ๋ก ์ ๋ณด๋ฅผ ์๋ํ๊ฒ ๋๋๋ฐ ์์์ ํ ๋ ๋ถ๋ชจ ํด๋์ค์ ๋ํด์๋ public๋ฉค๋ฒ์ฒ๋ผ ์ทจ๊ธ๋๊ณ ์ธ๋ถ์์๋ private๋ฉค๋ฒ๋ก ์ทจ๊ธํ๊ธฐ ์ํด protected๋ ์ฌ์ฉ๋๋ค.
protected๋ฉค๋ฒ์ ์ ๊ทผํ ์ ์๋ ์์ญ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์ด ๋ฉค๋ฒ๋ฅผ ์ ์ธํ ํด๋์ค์ ๋ฉค๋ฒ
2. ์ด ๋ฉค๋ฒ๋ฅผ ์ ์ธํ ํด๋์ค๊ฐ ์ํ ํจํค์ง์ ๋ฉค๋ฒ
3. ์ด ๋ฉค๋ฒ๋ฅผ ์ ์ธํ ํด๋์ค๋ฅผ ์์๋ฐ์ ์์ํด๋์ค์ ๋ฉค๋ฒ

public > protected > default > private ์์ผ๋ก ์ ๊ทผ๋ฒ์๊ฐ ๋๋ค.
| ์ ๊ทผ ์ ์ด์ | ๊ฐ์ ํด๋์ค์ ๋ฉค๋ฒ | ๊ฐ์ ํจํค์ง์ ๋ฉค๋ฒ | ์์ ํด๋์ค์ ๋ฉค๋ฒ | ๊ทธ์ธ์ ์์ญ |
|---|---|---|---|---|
| public | โ | โ | โ | โ |
| protected | โ | โ | โ | X |
| default | โ | โ | X | X |
| private | โ | X | X | X |
์๋ฐ๊ฐ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ์์ ํ ๋ ํด๋์ค๋ ํจํค์ง๋ฅผ ์ฐพ์ ๊ธฐ์ค์ด ๋๋ ๊ฒฝ๋ก๋ฅผ ๋งํ๋ค.
์ฐ๋ฆฌ๊ฐ ์๋ฐ์ ์์ค์ฝ๋(.java)๋ฅผ ์ปดํ์ผํ๋ฉด ๋ฐ์ดํธ์ฝ๋(.class)๊ฐ ๋๋ค. ์ด ๋ฐ์ดํธ ์ฝ๋๋ฅผ class Loader๋ฅผ ํตํด JVM์ ๋ก๋ฉํ๋๋ฐ ์ด๋ ํด๋์คํจ์ค(๊ฒฝ๋ก)๋ฅผ ์ด์ฉํด ํ์ํ์ฌ ๋ก๋ฉํ๋ ๊ฒ์ด๋ค.
์ด๋ ํด๋์คํจ์ค๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ด ๋๊ฐ์ง๊ฐ ์๋ค. CLASSPATH ํ๊ฒฝ๋ณ์๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ -classpath ์ต์ ์ ์ฌ์ฉํ๋ค.
ํ๊ฒฝ๋ณ์๋ ์ด์์ฒด์ ์์ ์์ ํ๋ก์ธ์ค๋ค์ ์์ฑํ ๋ ์ฐธ์กฐํ๋ ๋ณ์์ด๋ค. JVM๊ธฐ๋ฐ ์ดํ๋ฆฌ์ผ์ด์ ๋ ์ด ํ๊ฒฝ๋ณ์๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋์ํ๋ค.

์๋ฐ๋ฅผ ์ค์นํ๊ณ ํ๋ก๊ทธ๋จ์ ๋๋ฆฌ๊ธฐ ์ ๋ค์๊ณผ ๊ฐ์ ํ๊ฒฝ๋ณ์ ์ค์ ์ ํด๋ณธ ๊ฒฝํ์ด ์์ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ์ค์ ์ ํด๋๋ฉด ํด๋์ค ๋ก๋๊ฐ ์ด ํ๊ฒฝ๋ณ์๋ฅผ ํธ์ถํด ํด๋น ๋๋ ํ ๋ฆฌ์ ํด๋์ค๋ค์ JVM์ ๋ก๋ํ๊ฒ ๋๋ค.
์ด๋ CLASSPATH ํ๊ฒฝ๋ณ์์ ๋ฌ๋ฆฌ ์ปดํ์ผ์ ํ ๋ ์ง์ ํ์ผ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ฃผ๋ ์ต์ ์ด๋ค.
์๋ฅผ ๋ค์ด HelloWorld.java ํ์ผ์ด C:\Java ๋๋ ํ ๋ฆฌ์ ์กด์ฌํ๊ณ ์ปดํ์ผ์ ํ์ํ ํด๋์ค ํ์ผ๋ค์ด C:\Java\ClassFile ์ ํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํด์ฃผ๋ฉด ๋๋ค.
javac -classpath C:\Java\ClassFile C:\Java\Hello.java
javac -cp C:\Java\ClassFile C:\Java\Hello.java
์ฐธ์กฐํ ํ์ผ์ด ์ฌ๋ฌ๊ฐ๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ;๋ก ๊ตฌ๋ถํด์ค ์ ์๋ค.
javac -classpath C:\Java\ClassFile;C:\Java\ClassFile2 C:\Java\Hello.java
javac -cp C:\Java\ClassFile;C:\Java\ClassFile2 C:\Java\Hello.java
๐ Reference
๋ณธ ์คํฐ๋๋ 2020 ๋ฐฑ๊ธฐ์ ๋์ ์๋ฐ์คํฐ๋์ ์ปค๋ฆฌํ๋ผ์ ์ฐธ๊ณ ํ์ฌ ์งํํ๊ณ ์์ต๋๋ค.