item 25 Jung inchul - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
Effective Java 3e ์์ดํ 25๋ฅผ ์์ฝํ ๋ด์ฉ ์ ๋๋ค.
์์ค ํ์ผ ํ๋์ ํฑ๋ ๋ฒจ ํด๋์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ธ ํ๋๋ผ๋ ์๋ฐ ์ปดํ์ผ๋ฌ๋ ๋ถํํ์ง ์๋๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ๋๋ฉด ํ ํด๋์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ง๋ก ์ ์ํ ์ ์์ผ๋ฉฐ, ๊ทธ์ค ์ด๋ ๊ฒ์ ์ฌ์ฉํ ์ง๋ ์ด๋ ์์ค ํ์ผ์ ๋จผ์ ์ปดํ์ผํ๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ๊ถ์ฅ ํ์ง๋ ์๋๋ค.
public class Main {
public static void main(String[] args) {
System.out.println(Utensil.NAME + Dessert.NAME);
}
}
Utensil.java
class Utensil {
static final String NAME = "pan";
}
class Dessert {
static final String NAME = "cake";
}
Dessert.java
class Utensil {
static final String NAME = "pot";
}
class Dessert {
static final String NAME = "pie";
}
์ด ์ข๊ฒ "javac Main.java Dessert.java" ๋ช
๋ น์ผ๋ก ์ปดํ์ผ ํ๋ค๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋๊ณ Utensil๊ณผ Dessert ํด๋์ค๋ฅผ ์ค๋ณต ์ ์ ํ๋ค๊ณ ์๋ ค์ค ๊ฒ์ด๋ค. ์ปดํ์ผ๋ฌ๋ ๊ฐ์ฅ ๋จผ์ Main.java๋ฅผ ์ปดํ์ผํ๊ณ , ๊ทธ ์์์ (Dessert ์ฐธ์กฐ๋ณด๋ค ๋จผ์ ๋์ค๋) Utensil ์ฐธ์กฐ๋ฅผ ๋ง๋๋ฉด Utensil.java ํ์ผ์ ์ดํด Utensil๊ณผ Dessert๋ฅผ ๋ชจ๋ ์ฐพ์๋ผ ๊ฒ์ด๋ค. ๊ทธ๋ฐ ๋ค์ ์ปดํ์ผ๋ฌ๊ฐ ๋ ๋ฒ์งธ ๋ช
๋ น์ค ์ธ์๋ก ๋์ด์จ Dessert.java๋ฅผ ์ฒ๋ฆฌํ๋ ค ํ ๋ ๊ฐ์ ํด๋์ค์ ์ ์๊ฐ ์ด๋ฏธ ์์์ ์๊ฒ ๋๋ค.
๊ตณ์ด ์ฌ๋ฌ ํฑ๋ ๋ฒจ ํด๋์ค๋ฅผ ํ ํ์ผ์ ๋ด๊ณ ์ถ๋ค๋ฉด ์ ์ ๋ฉค๋ฒ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํด๋ณผ ์ ์๋ค. ์ฝ๊ธฐ ์ข๊ณ private์ผ๋ก ์ ์ธํ๋ฉด ์ ๊ทผ ๋ฒ์๋ ์ต์๋ก ๊ด๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ ๋ฆฌ
์์ค ํ์ผ ํ๋์๋ ๋ฐ๋์ ํฑ๋ ๋ฒจ ํด๋์ค(ํน์ ํฑ๋ ๋ฒจ ์ธํฐํ์ด์ค)๋ฅผ ํ๋๋ง ๋ด์. ์ด ๊ท์น๋ง ๋ฐ๋ฅธ๋ค๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ํ ํด๋์ค์ ๋ํ ์ ์๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค์ด ๋ด๋ ์ผ์ ์ฌ๋ผ์ง๋ค.