์์์ ๋ชฉ์ ์ ์ฝ๋ ์ฌ์ฌ์ฉ์ด ์๋๋ค.
์์์ ํ์ ๊ณ์ธต์ ๊ตฌ์กฐํํ๊ธฐ ์ํด ์ฌ์ฉํด์ผ ํ๋ค.
ํ์
๊ณ์ธต์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ค์ํ ํน์ฑ ์ค ํ๋์ธ ๋คํ์ฑ์ ๊ธฐ๋ฐ์ ์ ๊ณตํ๋ค.
์์์ ์ด์ฉํด ์์ ํด๋์ค๋ฅผ ์ถ๊ฐํ๋ ค ํ๋ค๋ฉด ์ค์ค๋ก์๊ฒ ๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ์ ํด๋ณด์
๋ง์ ์๊ฐ์ด ํ๋ฅธ ์ง๊ธ๋ ์ฌ์ ํ ์์์ ๋คํ์ฑ์ ๊ตฌํํ ์ ์๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค.
ํ์ง๋ง ์ต๊ทผ์ ์ธ์ด๋ค์ ์์ ์ด์ธ์๋ ๋คํ์ฑ์ ๊ตฌํํ ์ ์๋ ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ ์ ๊ณตํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ณผ๊ฑฐ์ ๋นํด ์์์ ์ค์์ฑ์ด ๋ง์ด ๋ฎ์์ก๋ค๊ณ ํ ์ ์๋ค.
์ด๋ฒ ์ฅ์ ํตํด์ ๋คํ์ฑ์ด ๋ฐํ์์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๊ธฐ์ ์ ํฉํ ๋ฉ์๋๋ฅผ ๋์ ์ผ๋ก ํ์ํ๋ ๊ณผ์ ์ ํตํด ๊ตฌํ ๋๋ฉฐ ์์์ด ์ด๋ฐ ๋ฉ์๋๋ฅผ ์ฐพ๊ธฐ ์ํ ์ผ์ข ์ ํ์ ๊ฒฝ๋ก๋ฅผ ํด๋์ค ๊ณ์ธต์ ํํ๋ก ๊ตฌํํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ผ๋ ์ฌ์ค์ ์ดํดํ ๊ฒ์ด๋ค.
๋คํ์ฑ์ด๋ผ๋ ๋จ์ด๋ โ๋ง์โ์ ์๋ฏธํ๋ โpolyโ์ โํํโ๋ฅผ ์๋ฏธํ๋ โmorphโ์ ํฉ์ฑ์ด๋ก โ๋ง์ ํํ๋ฅผ ๊ฐ์ง ์ ์๋ ๋ฅ๋ ฅโ์ ์๋ฏธํ๋ค.
๋คํ์ฑ์ ๋ถ๋ฅ
์ ๋๋ฒ์ : ํ์ ์ด ๋ฌ๋ผ๋ ๊ฐ์ code๋ฅผ ์ํ
์์ : ํ์ ์ด ๋ค๋ฅด๋ฉด ๋ค๋ฅธ version์ code๋ฅผ ์ํ
์์์ ์ง์ ํ ๋ชฉ์ ์ ์ฝ๋ ์ฌ์ฌ์ฉ์ด ์๋๋ผ ๋คํ์ฑ์ ์ํ ์๋ธํ์ ๊ณ์ธต์ ๊ตฌ์ถํ๋ ๊ฒ์ด๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ธฐ ์ํด์๋ ํญ์ ๋ฐ์ดํฐ์ ํ๋์ด๋ผ๋ ๋ ๊ฐ์ง ๊ด์ ์ ํจ๊ป ๊ณ ๋ คํด์ผ ํ๋ค.
๋ฐ์ดํฐ ๊ด์ ์ ์์ : ์์์ ์ด์ฉํ๋ฉด ๋ถ๋ชจ ํด๋์ค์์ ์ ์ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํด๋์ค์ ์ธ์คํด์ค์ ์๋์ผ๋ก ํฌํจ์ํฌ ์ ์๋ค.
ํ๋ ๊ด์ ์ ์์ : ๋ฐ์ดํฐ๋ฟ๋ง ์๋๋ผ ๋ถ๋ชจ ํด๋์ค์์ ์ ์ํ ์ผ๋ถ ๋ฉ์๋ ์ญ์ ์๋์ผ๋ก ์์ ํด๋์ค์ ํฌํจ์ํฌ ์ ์๋ค.
๋จ์ํ ๋ฐ์ดํฐ์ ํ๋์ ๊ด์ ์์๋ง ๋ฐ๋ผ๋ณด๋ฉด ์์์ด๋ ๋ถ๋ชจ ํด๋์ค์์ ์ ์ํ ๋ฐ์ดํฐ์ ํ๋์ ์์ ํด๋์ค์์ ์๋์ ์ผ๋ก ๊ณต์ ํ ์ ์๋ ์ฌ์ฌ์ฉ ๋งค์ปค๋์ฆ์ผ๋ก ๋ณด์ผ ๊ฒ์ด๋ค. ํ์ง๋ง ์ด ๊ด์ ์ ์์์ ์คํดํ ๊ฒ์ด๋ค.
๋์ ๋ฉ์๋ ํ์์ self๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด์ ํด๋์ค์์ ์์ํด์ ์์ ๊ณ์ธต์ ์ญ๋ฐฉํฅ์ผ๋ก ์ด๋ค์ง๋ฉฐ ๋ฉ์๋ ํ์์ด ์ข ๋ฃ๋๋ ์๊ฐ self ์ฐธ์กฐ๋ ์๋์ผ๋ก ์๋ฉธ๋๋ค.
๋์ ๋ฉ์๋ ํ์ ์๋ฆฌ
public class Lecture {
public String stats() {
return String.format("Title: %s, Evaluation Method: %s", title, getEvaluationMethod());
}
public String getEvaluationMethod() {
return "Pass or Fail";
}
}
public class GradeLecture extends Lecture {
@Override
public String getEvaluationMethod() {
return "Grade";
}
}
417, 419 ํ์ด์ง ์ฐธ์กฐ
์ ์ ํ์ ์ธ์ด์์๋ ์ฝ๋๋ฅผ ์ปดํ์ผํ ๋ ์์ ๊ณ์ธต ์์ ํด๋์ค๋ค์ด ๋ฉ์์ง๋ฅผ ์ดํดํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.
๋์ ํ์ ์ธ์ด ์ญ์ ๋ฉ์์ง๋ฅผ ์์ ํ ๊ฐ์ฒด์ ํด๋์ค๋ถํฐ ๋ถ๋ชจ ํด๋์ค์ ๋ฐฉํฅ์ผ๋ก ๋ฉ์๋๋ฅผ ํ์ํ๋ค. ์ฐจ์ด์ ์ด๋ผ๋ฉด ๋์ ํ์ ์ธ์ด์๋ ์ปดํ์ผ ๋จ๊ณ๊ฐ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ์ฝ๋๋ฅผ ์คํ ํด๋ณด๊ธฐ ์ ์๋ ๋ฉ์์ง ์ฒ๋ฆฌ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ํ๋จํ ์ ์๋ค๋ ์ ์ด๋ค.
์ดํดํ ์ ์๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋์ ํ์ ์ธ์ด์ ํน์ง์ ๋ฉํ ํ๋ก๊ทธ๋๋ฐ ์์ญ์์ ์ง๊ฐ๋ฅผ ๋ฐํํ๋ค. ๋งํด ํ์ธ๋ฌ๋ ๋์ ํ์ ์ธ์ด์ ์ด๋ฌํ ํน์ง์ ์ด์ฉํด ๋๋ฉ์ธ-ํนํ ์ธ์ด๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐฉ์์ ๋์ ๋ฆฌ์ ์ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
self ์ฐธ์กฐ์ ๊ฐ์ฅ ํฐ ํน์ง์ ๋์ ์ด๋ผ๋ ์ ์ด๋ค. self ์ฐธ์กฐ๋ ๋ฉ์์ง๋ฅผ ์์ ํ ๊ฐ์ฒด์ ํด๋์ค์ ๋ฐ๋ผ ๋ฉ์๋ ์ฐธ์์ ์ํ ๋ฌธ๋งฅ์ ์คํ ์์ ์ ๊ฒฐ์ ํ๋ค.
super ์ฐธ์กฐ๋ ๋ถ๋ชจ ํด๋์ค์์๋ถํฐ ๋ฉ์๋ ํ์์ ์์ํ๋ค๋ ์๋ฏธ์ด๋ค.
๋ฉ์๋ ํ์ ์ค์๋ ์์ ํด๋์ค์ ์ธ์คํด์ค์ ๋ถ๋ชจ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ๋์ผํ self ์ฐธ์กฐ๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ผ๋ก ๋ด๋ ๋ฌด๋ฐฉํ๋ค.
๋ฐ๋ผ์ ๊ทธ๋ฆผ 12.20์ ๊ทธ๋ฆผ 12.21๊ณผ ๊ฐ์ด ๋ฐ๊ฟ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ๊ณ์ธต์ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด๋ค ์ฌ์ด์์ self ์ฐธ์กฐ๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ ์ผ๋ก ๊ฐ ์ธ์ค ํด์ค์์ self ์ฐธ์กฐ๋ฅผ ๊ณต์ ํ๋ self๋ผ๋ ๋ณ์๋ฅผ ํฌํจํ๋ ๊ฒ์ฒ๋ผ ํํํ ์ ์๋ค.
426p ์ฐธ๊ณ
์ถ์ฒ
์ค๋ธ์ ํธ - ์ฝ๋๋ก ์ดํดํ๋ ๊ฐ์ฒด์งํฅ ์ค๊ณ
https://github.com/eternity-oop/object