๋ชฉํ
์๋ฐ์ ํจํค์ง์ ๋ํด ํ์ตํ์ธ์.
ํ์ตํ ๊ฒ (ํ์)
- package ํค์๋
- import ํค์๋
- ํด๋์คํจ์ค
- CLASSPATH ํ๊ฒฝ๋ณ์
- -classpath ์ต์
- ์ ๊ทผ์ง์์(์ ๊ทผ์ ์ด์)
pacakage ํค์๋
์ฐ๋ฆฌ๊ฐ ์ปดํจํฐ์์ ํ ํด๋ ์์ ๋น์ทํ ์ฑ์ง์ด ์๋ ํ์ผ๋ค์ ๋ฃ์ด์ ์ ๋ฆฌํ๋ ๊ฒ ์ฒ๋ผ ์๋ฐ์ ํจํค์ง๋ ์ด๊ฒ๊ณผ ๋์ผํ ๊ฐ๋ ์ด๋ค.
์ฅ์
- pacakage๋ ํด๋์ค์ ๋ถ๋ฅ๊ฐ ์ฉ์ดํ๋ค. (๋น์ทํ ๊ฒ ๋ผ๋ฆฌ ๋ฌถ๋๋ค)
- ํจํค์ง๊ฐ ๋ค๋ฅด๋ค๋ฉด ๋์ผํ ํด๋์ค๋ช ์ ์ฌ์ฉํ ์ ์๋ค.
Package ๊ณ์ธต
FQCN (Fully Qualified Class Name)
๋ชจ๋ ํด๋์ค์๋ ํจํค์ง๊ฐ ์๋ค. String ํด๋์ค์ ํจํค์ง๋ java.lang ์ด๋ฉฐ, FQCN์ java.lang.String์ด ๋๋ค.
์์ Accountํด๋์ค์ FQCN์? me.iseunghan.learncrud.Accounts.Account๊ฐ ๋๋ค.
ํจํค์ง ์ด๋ฆ ๊ท์น
ํจํค์ง ์์์ด๋ฆ | ๋ด์ฉ |
java | ์๋ฐ ๊ธฐ๋ณธ ํจํค์ง(Java vendor ๊ฐ๋ฐ) |
javax | ์๋ฐ ํ์ฅ ํจํค์ง(Java vendor ๊ฐ๋ฐ) |
org | ์ผ๋ฐ์ ์ผ๋ก ๋น์๋ฆฌ๋จ์ฒด (์คํ์์ค) ํจํค์ง |
com | ์ผ๋ฐ์ ์ผ๋ก ์๋ฆฌ๋จ์ฒด(ํ์ฌ) ํจํค์ง |
์ถ์ฒ : kils-log-of-develop.tistory.com/430
import ํค์๋
์ธ๋ถ ํจํค์ง์ ํด๋์ค๋ฅผ ๋ถ๋ฌ ์ฌ์ฉํ๊ณ ์ ํ ๊ฒฝ์ฐ์ ์๋ ํด๋์ค๋ช ์์ ํจํค์ง๋ฅผ ๋ช ์ํด์ผ ํ๋ค.
// pacakage ๋ช
์
me.iseunghan.accounts.Account account = new me.iseunghan.accounts.Account();
์ฐ๋ฆฌ๋ ์ด๊ฒ์ import ๋ฌธ์ผ๋ก ๋ช ์ํด์ค์ผ๋ก์จ, ํด๋์ค๊ฐ ์ํ ํจํค์ง๋ช ์ ์๋ตํ ์ ์๋ ๊ฒ์ด๋ค.
์ด๋ฐ์์ผ๋ก ํจํค์ง๋ฅผ ๋ช ์ํ ๋
// import๋ฅผ ํด์ ์๋ต ๊ฐ๋ฅ
Account account = new Account();
๋นํธ ์ธ ํจํค์ง (Built-in Package)
์ฐ๋ฆฌ๊ฐ import๋ฅผ ์๋ตํด๋ ๋๋ ๊ฒฝ์ฐ,
์ฐ๋ฆฌ๊ฐ ์์ฃผ ์ฌ์ฉํ๋ java.lang.* ํจํค์ง๋ import๋ฅผ ํด์ฃผ์ง ์์๋ ์ฌ์ฉํ ์๊ฐ ์๋ค. (์ : String, System ํด๋์ค ๋ฑ)
์๋ฐ๊ฐ ์์์ java.lang ํด๋์ค๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ์ ์๋ค.
ํด๋์คํจ์ค
JVM์ด ์๋ฐ ํด๋์ค ํ์ผ์ ์ฐพ์ ๋ ClassPath ๊ฒฝ๋ก๋ฅผ ํ์ธํ์ฌ ํด๋์ค๋ค์ ์์น๋ฅผ ํ์ธํ๋ค.
์๋ฐ ํด๋์ค ํ์ผ์ ์ปดํ์ผํ๋ฉด ์๋ฐ ๋ฐ์ดํธ ์ฝ๋(.class) ๋ก ๋ณํ์ด ๋๋๋ฐ, java runtime(java ๋๋ jre)์ผ๋ก ์ด .class ํ์ผ์ ํฌํจ๋ ๋ช ๋ น์ ์คํํ๊ธฐ ์ํด .class ํ์ผ์ ์ฐพ๋๋ฐ ์ด๋, classpath์ ์ง์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํด ์ฐพ๋๋ค.
classpath๋ .class ํ์ผ์ด ํฌํจ๋ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์ฝ๋ก (;)์ผ๋ก ๊ตฌ๋ถํ ๋ชฉ๋ก์ด๋ค.
์ด classpath๋ฅผ ์ง์ ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋๊ฐ์ง๊ฐ ์๋ค.
- CLASSPATH ํ๊ฒฝ๋ณ์ ์ฌ์ฉ
- java runtime์ -classpath ์ต์ ์ฌ์ฉ
CLASSPATH ํ๊ฒฝ๋ณ์ ์ฌ์ฉ
main ๋ฉ์๋๋ ClassPath.class์ ์กด์ฌํ๋ค.
์คํ์ ๋ค์๊ณผ ๊ฐ๋ค : C;\myclass> java ClassPath
๊ทธ๋ ๋ค๋ฉด AAA, BBB๋ฅผ ๋ค๋ฅธ ํด๋๋ก ์ด๋์์ผ์ ์คํ์ ํ๋ค๋ฉด?
C:\myclass> java ClassPath -> error ๋ฐ์!
-classpath ์ต์
javc <options> <source files>
์ปดํ์ผ๋ฌ๊ฐ ์ปดํ์ผ ํ๊ธฐ ์ํด์ ํ์๋ก ํ๋ ์ฐธ์กฐํ ํด๋์ค ํ์ผ๋ค์ ์ฐพ๊ธฐ ์ํด์ ์ปดํ์ผ์ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ฃผ๋ ์ต์
๋ง์ฝ ํ์ํ ํด๋์ค ํ์ผ(AAA.class, BBB.class)๋ค์ด mysubclass ํด๋์ ์์ผ๋ฉด,
javac -classpath C:\myclass\mysubclass C:\myclass\ClassPath.java ๋ก ํด์ฃผ๋ฉด ๋๋ค.
classpath ๋์ ๋จ์ถ์ด cp๋ฅผ ์ฌ์ฉํด๋ ๋๋ค.
javac -cp C:\myclass\mysubclass C:\myclass\ClassPath.java
์ ๊ทผ์ง์์ (์ ๊ทผ์ ์ด์)
public | protected | default | private | |
๊ฐ์ ํจํค์ง, ๊ฐ์ ํด๋์ค | ํ์ฉ | ํ์ฉ | ํ์ฉ | ํ์ฉ |
๊ฐ์ ํจํค์ง, ์์ ๊ด๊ณ | ํ์ฉ | ํ์ฉ | ํ์ฉ | ๋ถ์ฉ |
๊ฐ์ ํจํค์ง, ์์ ๊ด๊ณ ์๋ | ํ์ฉ | ํ์ฉ | ํ์ฉ | ๋ถ์ฉ |
๋ค๋ฅธ ํจํค์ง, ์์ ๊ด๊ณ | ํ์ฉ | ํ์ฉ | ๋ถ์ฉ | ๋ถ์ฉ |
๋ค๋ฅธ ํจํค์ง, ์์ ๊ด๊ณ ์๋ | ํ์ฉ | ๋ถ์ฉ | ๋ถ์ฉ | ๋ถ์ฉ |
์ง์ ํด๋ณด๊ธฐ
ํจํค์ง ๊ณ์ธต
์ด๋ฆ์๋ ๋ช ์๋์์ง๋ง, PublicClass๋ public์ผ๋ก ์ ์ธ๋์ด์๊ณ , DefaultClass๋ defalut๋ก ์ ์ธ๋์ด์๋ ํด๋์ค์ด๋ค.
ํด๋์ค ์ ๊ทผ์ ์ด์
- public
- default
๊ฐ์ ํด๋์ค์์ ์ ๊ทผ ์ ์ด์
๊ฐ์ ํจํค์ง๋ด์ ์๋ ํด๋์ค๋ผ์ import๋ฅผ ์ํด์ค๋ ์ฌ์ฉํ ์ ์๋ค.
ํ์ง๋ง ๋ค๋ฅธ ํจํค์ง์ธ inner.InnerClass์์ ์ฌ์ฉํ๋ค๋ฉด?
import week7.outer.ํด๋์ค๋ช ; import ํค์๋๋ก ํจํค์ง๋ฅผ ์ ์ธํด์ค๋ค.
PublicClass๋ ์ฌ์ฉํ๋๋ฐ ๋ฌธ์ ์์ง๋ง,
DefaultClass๋ฅผ public์ผ๋ก ๋ง๋ค๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค!
๋ฉ์๋ ์ ๊ทผ์ ์ด์
- public
- default
- private
- protected
๊ฐ์ ํจํค์ง ๋ด์์ ์ ๊ทผ
/* print()์ name์ ๊ฐ๊ฐ ํด๋์ค์ ์ด๋ฆ๊ณผ ๊ฐ์ด ์ ๊ทผ์ ์ด์๊ฐ ๋ถ์๋ค. */
public void print(){
System.out.println(name);
}
default void print(){
System.out.println(name);
}
protected void print(){
System.out.println(name);
}
private void print(){
System.out.println(name);
}
๋ค๋ฅธ ํจํค์ง์์ ์ ๊ทผ
REFERENCES
www.orentec.co.kr/teachlist/JAVA_BASIC_1/teach_sub1.php
www.tcpschool.com/java/java_modifier_accessModifier