๐ง 1. ์์์ด ๋ญ์ฃ ?
[Java] ์์(Inheritance) ์ฌ์ฉ๋ฒ๊ณผ ์์์ ์ฌ์ฉํ๋ ์ด์
๐ง 1. ์์์ด ๋ญ์ฃ ? ํ์ค์ธ๊ณ์์์ ์์์, ๋ถ๋ชจ๊ฐ ์์์๊ฒ ์ฌ์ฐ์ ๋ฌผ๋ ค์ฃผ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์์์ ์์์ ๋ฐ์ผ๋ฉด ๋ถ๋ชจ๊ฐ ๊ฐ์ง๊ณ ์๋ ์์์ ๊ทธ๋๋ก ์ป๊ฒ ๋ฉ๋๋ค. ์์์ ํด์ฃผ๋ฉด ํ์ค์ธ๊ณ
hoons-dev.tistory.com
์ด์ ๊ธ์ ์ฐธ๊ณ ํ์๋ฉด, ์์์ ์ฌ์ฉ๋ฒ๊ณผ ์๋ฐ์ ์์์ด ๋ฌด์์ธ์ง ์ดํดํ ์ ์์ต๋๋ค.
๐ฎ 2. ์์์ ์ฅ๋จ์
์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ์์์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฝ๋์ ํ์ฅ์ฑ, ์ฌ์ฌ์ฉ์ฑ ์์น
- ์ค๋ณต๋ ์ฝ๋ ์ ๊ฑฐ๊ฐ๋ฅ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์์ ๋คํ์ฑ
๋ค๋ง, ์์์ ๋ํ ์ดํด๊ฐ ๋ถ์กฑํ ์ํ์์ ์์์ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ์์์๋ ๋ง์ ๋จ์ ์ด ์กด์ฌํฉ๋๋ค.
์์์ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ๋ ๊ฐ๋ ฅํ ์๋จ์ด์ง๋ง, ํญ์ ์ต์ ์ ์๋๋ค. ์๋ชป ์ฌ์ฉํ๋ฉด ์ค๋ฅ๋ฅผ ๋ด๊ธฐ ์ฌ์ด ์ํํธ์จ์ด๋ฅผ ๋ง๋ค๊ฒ ๋๋ค.
- ์ดํํฐ๋ธ ์๋ฐ 3ํ
โป ์ด์ ๋ถํฐ ๋์ค๋ ์์์ ๋จ์ ์, ์ธํฐํ์ด์ค ์์(implements)๊ฐ ์๋, ๊ตฌํ ์์์์ ๋์ค๋ ๋ฌธ์ ์ ์ ๋๋ค.
1) ์บก์ํ๋ฅผ ๊นจํธ๋ฆฐ๋ค
์บก์ํ : ๊ฐ์ฒด์ ์์ฑ(๋ฐ์ดํฐ ํ๋)์ ํ์(๋ฉ์๋)๋ฅผ ํ๋๋ก ๋ฌถ๊ณ , ๊ตฌํ ๋ด์ฉ์ ์ ๊ทผ ์ ์ด์๋ฅผ ํตํด ์ ๋ณด ์๋ํฉ๋๋ค.
์ด๊ฒ์ ๋ค๋ฅธ ๋ง๋ก ํ์ด์ ์ด๋ค๋ฉด, ๋ถ๋ชจ ํด๋์ค๊ฐ ์ด๋ป๊ฒ ๊ตฌํ๋๋๋์ ๋ฐ๋ผ ํ์ ํด๋์ค์ ๋์์ ์ด์์ด ์๊ธธ ์ ์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ถ๋ชจ ํด๋์ค์ ๊ตฌํ ๋ด์ฉ์ ์์์ผ ํ์ ํด๋์ค์์ ํด๊ฒฐํ ์ ์๊ณ , ์ด๋ฌํ ๋ถํ์ํ ๊ตฌํ ๋ด์ฉ ๋ ธ์ถ์ ์บก์ํ๋ฅผ ๊นจํธ๋ฆฌ๋ ํ์์ ๋๋ค.
๋ง์ฝ, HashSet ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์๋ฐ์ ์๋ก์ด ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํฉ์๋ค.
์ด ์๋ก์ด ์๋ฃ๊ตฌ์กฐ(AwesomeHashSet)๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ดํ์ ๋ค์ด์จ ์์์ ์ซ์๋ฅผ ์นด์ดํ ํ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
class AwesomeHashSet<E> extends HashSet<E>{
// ์๋ก ์ถ๊ฐ๋ ํ๋ (์๋ก์ด ์์ ์ ์นด์ดํธ)
private int addCount = 0;
public AwesomeHashSet(){}
public AwesomeHashSet(int initCap, float loadFactor){
super(initCap, loadFactor);
}
// HashSet์ add์ addAll์ ์ค๋ฒ๋ผ์ด๋ฉ
@Override
public boolean add(E e){
addCount++;
return super.add(e);
}
@Override
public boolean addAll(Collection<? extends E> c){
addCount += c.size();
return super.addAll(c);
}
// ์๋ก ์์ฑ๋ getter
public int getAddCount(){
return addCount;
}
}
์ผํ ๋ณด๋ฉด, ์ ์์ ์ผ๋ก ์๋ํ๋ ์ฝ๋ ๊ฐ์ต๋๋ค.
์ฌ๋ฌ ๊ฐ์ ์์๋ฅผ addAllํ๊ฒ ๋๋ฉด, ํด๋น ์์์ ๊ธธ์ด๋งํผ ์นด์ดํ ํ ๋ค์ ๋ถ๋ชจ์ addAll์ ํธ์ถํ๊ณ
ํ ๊ฐ์ ์์๋ฅผ add ํ๊ฒ ๋๋ฉด, ์นด์ดํ ์ ํ๋ ๋๋ฆฌ๊ณ ๋ถ๋ชจ์ add ํจ์๋ฅผ ํธ์ถํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ์์ด๋ณด์ ๋๋ค.
๊ทธ๋ฌ๋, ์ด ์ฝ๋๋ ์ ์์ ์ผ๋ก ์๋๋์ง ์์ต๋๋ค.
// ๋ฌธ์ ์ ์์ธ
/* AbstractCollection.java */
public boolean addAll(Collection<? extends E> c) {
boolean modified = false;
for (E e : c)
if (add(e)) // add๋ฅผ ํธ์ถํ๋ค!!
modified = true;
return modified;
}
/* HashSet.java */
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
// ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ฝ๋
AwesomeHashSet<String> s = new AwesomeHashSet<>();
s.addAll(List.of("์", "์์", "์์๋๋ฐ"));
HashSet์ ๋ด๋ถ๋ฅผ ๋ค์ฌ๋ค๋ณด๋ฉด, addAll ๋ฉ์๋ ๋ด๋ถ์๋ add ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ "๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ฝ๋"์ฒ๋ผ addAll ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด, AwesomeHashSet.addAll์์ ์์ 3๊ฐ๊ฐ ์นด์ดํ ๋๊ณ , ๋ถ๋ชจ์ addAll์ ํธ์ถํ๊ฒ ๋ฉ๋๋ค.
๋ถ๋ชจ์ addAll์ ํธ์ถํ๋ฉด, AbstractCollection.java์ ๊ตฌํ๋์ด ์๋ addAll์ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
์ด ๋ด๋ถ์์ add ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋ฉ๋๋ค. ์ ํ ์ฐธ์กฐ์ ์ํด AwesomeHashSet๋ถํฐ ์ค๋ฒ๋ผ์ด๋ฉ ๋ add ๋ฉ์๋๊ฐ ์๋์ง ํ์ํฉ๋๋ค.
๋ง์นจ AwesomeHashSet.add์์ ์ค๋ฒ๋ผ์ด๋ฉ์ด ๋์๊ตฐ์!
๊ทธ๋์ AwesomeHashSet.add๊ฐ ์ด 3๋ฒ ํธ์ถ๋์ด ์นด์ดํ ์ด 3๋ฒ ๋ ์ฌ๋ผ๊ฐ๋๋ค.
๋ฐ๋ผ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ฝ๋๋ฅผ ์ ๋ ฅํ์ ๋, ์๋ ๊ธฐ๋ํ ๊ฐ์ 3์ด ์นด์ดํ ๋์ด์ผ ํ์ง๋ง, ์ด 6์ด ์นด์ดํ ๋๋ ๋ชจ์ต์ ๋ณผ ์ ์์ต๋๋ค.
์ค๋ฒ๋ผ์ด๋ฉ๊ณผ ์ค๋ฒ๋ก๋ฉ ๋ฐ ์ ํ ์ฐธ์กฐ์ ๋ํ ๋ด์ฉ (์ ์ด๋ ๊ฒ ํธ์ถ๋๋์ง ์ดํด๊ฐ ์ ๋๋ค๋ฉด)์ ๋ชจ๋ฅธ๋ค๋ฉด '๋ง๋๋ ๊ฐ๋ฐ์'๋์ ์ด ๊ธ์ ๋ณด๋ฉด ๋์์ด ๋ฉ๋๋ค.
[Java] ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ/ ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ํตํ ์์ ๋คํ์ฑ์ ๋ํ ์ดํด์ Self ์ฐธ์กฐ
์๋์ ๋ด์ฉ์ ์ค๋ธ์ ํธ(Object)๋ฅผ ์ฝ์ผ๋ฉด์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. Java์ ํ์ ๋๋ ์ด์ผ๊ธฐ์ด๋ฏ๋ก ๋ค๋ฅธ ์ธ์ด์๋ ์ ์ฉ๋์ง ์์ ์ ์์ต๋๋ค. 1. ์์์ ์ด์ฉํ ๋คํ์ฑ๊ณผ ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ/ ๋ฉ์๋
mangkyu.tistory.com
์ด์ฒ๋ผ ์์์ ์ฌ์ฉํ ํ, ๋ฉ์๋๋ฅผ ์ฌ์ ์ ํ ๊ฒฝ์ฐ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด, ๋ถ๋ชจ ํด๋์ค๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง ์์์ผ ํ๋ค๋ ๊ฒ์ด ๊ธฐ์ ์ ๊น๋ ค์์ด์ผ ํฉ๋๋ค.
์ฆ ๋ด๋ถ ๊ตฌํ์ ๋ถํ์ํ๊ฒ ๋ ธ์ถํ๋ ๊ผด์ด ๋๋ ๊ฒ์ด์ฃ .
๋ง์ฝ addAll ๋ฉ์๋๊ฐ add๋ฅผ ํธ์ถํ๋ ๊ฒ์ ์๊ณ , AwesomeHashSet์์ addAll ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํ์ง ์์๋ค๊ณ ํฉ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ง๊ธ ๋น์ฅ ํ๋ก๊ทธ๋จ์ ์ ์์ ์ผ๋ก ๋์๊ฐ์ง๋ง, ๋ค์ ๋ฆด๋ฆฌ์ฆ์์๋ ์ด๋ด ๊ฒ์ด๋ผ๋ ๋ณด์ฅ์ด ์์ต๋๋ค.
2) ๋ถ๋ชจ ํด๋์ค์ ํ๋์ ๋ฉ์๋๋ฅผ ์ฐพ๋๋ฐ ๋ถํธํจ์ด ์๋ค.
์์ ํด๋์ค์์๋ ๋ถ๋ชจ ํด๋์ค์ ํ๋์ ๋ฉ์๋๋ ๋ณด์ด์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฒซ ๋ฒ์งธ ๋จ์ ์์ ์ค๋ช ํ๋ฏ์ด ๋ถ๋ชจ ํด๋์ค์ ๋ด๋ถ ๊ตฌํ์ ์์์ผ ํ ์ผ์ด ์๊ธด๋ค๋ฉด, ๋ถ๋ชจ ํด๋์ค์ ๊ฐ์ ํ์ธ์ ํด์ผ ํฉ๋๋ค.
๋ํ ๋ถ๋ชจ์ ํ๋๋ฅผ ์ด์ฉํ ๋์๋, ์์ ํด๋์ค์๋ ํด๋น ํ๋๊ฐ ์ ์ธ๋์ด ์์ง ์์ ํํ์ด๋ค๋ณด๋ ํ์ธ์ด ํ์ํ ๊ฒฝ์ฐ ๋ถํธํจ์ ๊ฒช์ ์ ์์ต๋๋ค.
3) ์์์ ๊ฒฐํจ ์ญ์๋ ์์ํ๋ค.
๋ง์ฝ ๋ถ๋ชจ ํด๋์ค์ API์ ๊ฒฐํจ์ด ์๋ค๋ฉด, ์์ ํด๋์ค๋ ์ญ์ ์ด ๊ฒฐํจ์ด ์ ํ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์์์ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ฌํ ๊ฒฐํจ์ด ์๋์ง ํ์ธํด์ผ ํ๋ ๊ฒ์ฆ์ด ๋ฐ๋์ ํ์ํฉ๋๋ค.
์ด๋ฌํ ๊ฒ์ฆ์ ํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด๋ณด๋ ๋ฐฉ๋ฒ์ด ์ ์ผํฉ๋๋ค.
4) ์์์ API ๋ฌธ์์๋ ์ํฅ์ ๋ผ์น๋ค.
์ฒซ ๋ฒ์งธ ๋จ์ ์ ๋ง์ผ๋ ค๋ฉด, ์ฌ์ ์๋ฅผ ํ์ ๋ ์ด๋ค ์ผ์ด ์ผ์ด๋๋ ์ง ์ ํํ๊ฒ ๋ช ์ํด ๊ฐ๋ฐ์์๊ฒ ์๋ ค์ฃผ๋ฉด ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์์์ฉ ํด๋์ค๋ ์ฌ์ ์ํ๋ ๋ฉ์๋๋ค์ ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ์ด์ฉํ๋์ง(์๊ธฐ ์ฌ์ฉ) ๋ฌธ์๋ก ๋จ๊ฒจ์ผ๋ง ํฉ๋๋ค.
๊ทธ๋ฌ๋ "์ข์ API ๋ฌธ์๋ '์ด๋ป๊ฒ'๊ฐ ์๋๋ผ '๋ฌด์'์ ํ๋์ง๋ฅผ ์ค๋ช ํด์ผ ํ๋ค"๋ผ๋ ๊ฒฉ์ธ์ด ์์ต๋๋ค.
๋ด๋ถ์ ์ธ ๊ตฌํ์ ๋ ธ์ถ์ ๊ฒฉ์ธ๊ณผ ๋ฐ๋๊ณผ ๋ฐ๋๋๋ ์ํฉ์ผ๋ก ์์์ด ์บก์ํ๋ฅผ ํด์น๊ธฐ ๋๋ฌธ์ ์ด์ฉ ์ ์์ด ๋ํ๋๋ ๋จ์ ์ ๋๋ค.
5) ์์์ ํ๋ ๊ฒ์ ๊ต์ฅํ ๊น๋ค๋กญ๋ค.
์์์ ์ฌ์ฉํ์ ๋์ ์น๋ช ์ ์ธ ๋จ์ ์ ๋ง๊ธฐ ์ํด์๋,
- ์์์ฉ ํด๋์ค๋ฅผ ์์ฑํด์,
- ํด๋น ๋ด๋ถ ๊ตฌํ์ ๋ ธ์ถํ API ๋ฌธ์๋ฅผ ์์ฑํ ๋ค,
- ํ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ์์์ฉ ํด๋์ค์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ๊ฒ์ฆํด์ผ ํฉ๋๋ค.
- ์์์ฉ ํด๋์ค์ ์์ฑ์๋ ์ง, ๊ฐ์ ์ ์ผ๋ก ์ฌ์ ์ ๊ฐ๋ฅ ๋ฉ์๋๋ฅผ ํธ์ถํด์๋ ์ ๋ฉ๋๋ค ๋ฑ๋ฑ..
์์ฒญ๋ ๋ ธ๋ ฅ์ด ๋ค๊ณ , ํด๋์ค์ ์๊ธฐ๋ ์ ์ฝ์ด ์๋นํฉ๋๋ค. ๋ํ ๋ถ๋ชจ ํด๋์ค์ ์ง์์ ์ธ ๋ณํ๊ฐ ์๋ค๋ฉด ์ด ๋ณํ๊ฐ ์๊ธธ ๋ ๋ง๋ค ํ์ ํด๋์ค์ ์ค๋์์ ์ผ๋ คํ๊ฒ ๋๋ค๋ ๊ฒ์ ๊ต์ฅํ ๊น๋ค๋ก์ด ๊ธฐ์ ์์ ์ ์ ์์ต๋๋ค.
๐ญ 3. ๋ญ์ผ, ์์์ ์ธ์ ์จ์..?
์์์ ์ฌ์ฉํ๋ ์ด์ ๋, ์ค๋ณต๋๋ ์ฝ๋๋ฅผ ํผํ๊ธฐ ์ํ '์ฌ์ฌ์ฉ์ฑ'์ ์๋ค๊ณ ํ์ต๋๋ค.
์์ ๋จ์ ์ ๋ชจ๋ ๊ฐ์ ธ๊ฐ์ ๋์ ํ๊ฒฉ๊ณผ '์ฌ์ฌ์ฉ์ฑ'์ ํตํด ์ป๋ ์ด์ ๋ ๊ฐ์ง๋ฅผ ์ ์ธ์งํด์ผ ํฉ๋๋ค.
๋ํ ์์ ๋ง๊ณ , private ํค์๋๋ก ๊ธฐ์กด ํด๋์ค(์์์์ ๋ถ๋ชจ ํด๋์ค๋ก ์ฌ์ฉํ๋ ค๋ ๊ฒ)์ ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ๋๋ก ํ๋ '๊ตฌ์ฑ(Composition)'์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
๊ตฌ์ฑ์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด, ๋ฉ์๋ ์ฌ์ ์ ํน์ ์๋ก์ด ๋ฉ์๋ ์ ์๋ก๋ถํฐ ์ค๋ ๋ฌธ์ ๋ฅผ ํผํด๊ฐ๋ ์ฅ์ ์ ๊ฐ์ง๋ฉด์, ๊ธฐ์กด์ ํด๋์ค๋ฅผ ์ธ์คํด์ค๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
์์์ด ์ ์ ํ ๊ฒฝ์ฐ๋ ํด๋์ค์ ํ๋์ ํ์ฅ(extend)ํ๋ ๊ฒ์ด ์๋๋ผ ์ ์ (refine)ํ ๋๋ผ๊ณ ํฉ๋๋ค.
์ฌ๊ธฐ์ ํ์ฅ์ด๋ ์๋ก์ด ํ๋์ ๋ง๋ถ์ฌ ๊ธฐ์กด์ ํ๋์ ๋ถ๋ถ์ ์ผ๋ก ๋ณด์ํ๋ ๊ฒ์ ์๋ฏธํ๊ณ , ์ ์ ๋ ๋ถ๋ถ์ ์ผ๋ก ๋ถ์์ ํ ํ๋์ ์์ ํ๊ฒ ๋ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๐ค ์ ๋ง is-a ๊ด๊ณ์ธ๊ฐ?
ํ์ ํด๋์ค๊ฐ ์ ๋ง ์์ ํด๋์ค์ ํ์ ํ์ ์ธ์ง ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์๋ ๊ฒฝ์ฐ๋ผ๋ฉด, ๋๋ถ๋ถ ๊ตฌ์ฑ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๐ค ์์ ๋์ ์ปดํฌ์ง์ (๊ตฌ์ฑ)์ ์ฌ์ฉํ ์๋ ์๋?
๊ตฌ์ฑ์ ์์์ ์ฌ๋ฌ ๋ฌธ์ ์ ์ ํด๊ฒฐํฉ๋๋ค. ์บก์ํ๋ฅผ ๊นจํธ๋ฆฌ๋ ์์๋ณด๋ค๋, ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๐ค ์์์ผ๋ก ์ธํด ๋ด๋ถ ๊ตฌํ์ ๋ถํ์ํ๊ฒ ๋ ธ์ถํ์ง๋ ์๋?
์์์ ํ๊ฒ ๋๋ฉด, ๋ฉ์๋ ์ฌ์ ์ ์ค ๋ด๋ถ ๊ตฌํ์ ์์์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๊น๋๋ค.
๐ค ํ์ฅํ๋ ค๋ ํด๋์ค์ ์ ๋ง ๊ฒฐํจ์ด ์๋๊ฐ? ํน์ ๊ฒฐํจ ์ญ์ ์ ํ๋์ด๋ ๊ด์ฐฎ์๊ฐ?
ํ์ ํด๋์ค๋ ์์ ํด๋์ค์ ๊ฒฐํจ ์ญ์ ์์ํ๊ธฐ ๋๋ฌธ์ ์ ์คํ๊ฒ ์ ํํด์ผ ํฉ๋๋ค.
๊ธ์ ์์ฑํ๋ฉด์ ์์์ ๋ํ ๋ถ์ ์ ์ด์ผ๊ธฐ๋ฅผ ๊ต์ฅํ ๋ง์ด ์ ํ๊ฒ ๋์์ต๋๋ค.
์ฌ์ง์ด "์์์ ๊ทธ์ ์ฌ์ฌ์ฉ์ ์ํ ์ ์์นํฅ ๊ธฐ์ ์ผ ๋ฟ์ด๋ฉฐ, ์ด๋ ๊ฐ์ฒด์งํฅ์ ๋ง๊ฐ๋จ๋ฆฐ๋ค"๋ผ๋ฉฐ, ์์ ์์์ ์ฌ์ฉ์ ์ง์ํด์ผ ํ๋ค๋ ๊ธ๋ ๋ณด์์ต๋๋ค.
๋ถ๋ช ์์์ ๊ฐ์ฒด์งํฅ์ ์ฃผ์ ํน์ง(์ถ์ํ, ์บก์ํ, ์์, ๋คํ์ฑ)์ ๋ค์ด๊ฐ ๋งํผ ๊ฐ๋ ฅํ ํค์๋์ธ๋ฐ ๋ง์ด์ฃ .
๊ฐ์ฒด์งํฅ์ด ํ์ํ ๋์๋ ์ด๋ฌํ ๋จ์ ์ ๊ณ ๋ คํ์ง ๋ชปํ๊ณ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ์ํด ๋ง๋ค์ด์ก์ง๋ง, ์ ์ ์์คํ ์ ๋ณํ๊ฐ ๋ง์์ง๋ ํ๋์ ๊ฒฝ์ฐ ์ ์ฐ์ฑ์ด ๋ ์ค์ํ ๊ฐ๋ ์ผ๋ก ์๋ฆฌ์ก์ ์บก์ํ๋ฅผ ๊นจํธ๋ฆฌ๋ ์์์ ๊ฒฐ๊ตญ ๋ฏธ์ดํธ์ด ๋ฐํ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฌผ๋ก ์์ ๋จ์ ๋ค์ ๊ณ ๋ คํ์ ๋ ์ง์ํด์ผ ํ๋ค๋ ๊ทผ๊ฑฐ๋ ์ถฉ๋ถํ์ง๋ง, ์ด๋ค ๊ฒ์ด ๋ฌธ์ ์ธ์ง ์๊ณ ์ง์ํ๋ ๊ฒ๊ณผ ๋ฌด์กฐ๊ฑด์ ์ธ ์ง์์๋ ์ฐจ์ด๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๊ธฐ์ ์ ์ ํ์ด ๊ต์ฅํ ์ค์ํจ์ ๊นจ๋ซ๊ฒ ๋๋ ํ์ต์ด์์ต๋๋ค.
๐ ์ถ์ฒ/์ธ์ฉ
[๋์] ์ดํํฐ๋ธ ์๋ฐ 3ํ
[๋งํฌ] https://programmer-ririhan.tistory.com/408
'โ ์๋ฐ : JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Effective Java] ์์ฑ์ ๋์ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋ ์ฌ์ฉํ๊ธฐ (0) | 2023.01.06 |
---|---|
[Java] ์๋ฐ ์ง๋ ฌํ (Serialization) (1) | 2023.01.06 |
[Java] ์์๋์ ๊ตฌ์ฑ(Composition)์ ์ฌ์ฉํ์ (0) | 2022.12.08 |
[Java] ์์(Inheritance) ์ฌ์ฉ๋ฒ๊ณผ ์์์ ์ฌ์ฉํ๋ ์ด์ (0) | 2022.12.06 |