โ ์ถ์ํด๋์ค ( abstract : ๋ฏธ์์ฑ์ด๋ผ๋ ์๋ฏธ )
- ์ ์ธ๋ง ์๊ณ ์ ์๊ฐ ์๋ ํ๋ ์ด์์ ๋ฉ์๋(์ถ์ ๋ฉ์๋)๋ฅผ ๊ฐ๋ ํด๋์ค๋ก ํ์ ํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ฉ(overriding) ํ ๊ฒ์ผ๋ก ์์๋๋ ๋ฉ์๋์ ๋ํด ๋ฉ๋ชจ๋ฆฌ๋ญ๋น ์์ด ๋ฏธ๋ฆฌ ํธ์ถ ํ ๊ณํ์ ์ธ์ ๋๊ธฐ ์ํด ๋ง๋ ๋ค.
โ ํ์ ๋ฐ ๊ตฌ์กฐ
[์ ๊ทผ ์ ์ด์ง์์] abstract class ํด๋์ค๋ช {
[์ ๊ทผ ์ ์ด์ง์์] abstract ์๋ฃํ ๋ฉ์๋๋ช ([๋งค๊ฐ๋ณ์], ...); //๋ฉ์๋์ ์ ์ธ๋ถ๋ง ์์ฑํ๋ค.
}
์ ์ด์ - 1. ์ ๊ทผ์ ์ด ์ง์์ : public , protected , default , private
- 2. ๊ทธ์ธ ์ง์์ : static, final , abstract , ...๋ฑ๋ฑ
**๋จ, ์ ๊ทผ ์ ์ด์ง์์๋ ๋ค๊ฐ์ง์ค ํ๋๋ง ์ ํํด์ ์ฌ์ฉํด์ผํ๋ค. ์ ์ด์๋ค ๊ฐ์ ์์๋ ๊ด๊ณ์์ง๋ง ์ฃผ๋ก ์ ๊ทผ ์ ์ด ์ง์์๋ฅผ ์ ์ผ ์ผ์ชฝ์ ๋๋ ๊ฒฝํฅ์ด ์๋ค.
โ ํน์ง
ํด๋์ค๊ฐ ์ ์ด๋ ํ๋ ์ด์์ ์ถ์ ๋ฉ์๋๋ฅผ ํฌํจํ ๋ ๊ทธ ํด๋์ค๋ ํด๋์ค ์์ 'abstract' ํค์๋๋ฅผ ๋ถ์ฌ
์ถ์ ํด๋์ค๋ก ๋ช ์ํด์ผํ๋ฉฐ, ์ถ์ํด๋์ค๋ก ์ ์ธํ ๊ฒฝ์ฐ์๋ ๋ถ์์ ํ ํํ์ ํด๋์ค์ด๋ฏ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค. ์ถ์ ๋ฉ์๋๊ฐ ์กด์ฌํ์ง ์๋ ์ถ์ ํด๋์ค ๋ง์ ๋ ๊ฐ์ฒด๋ฅผ ์์ฑ ํ ์ ์๋ ๊ฒ์ด๋ค.
→ ์ถ์๋ฉ์๋๊ฐ ์๋ ํด๋์ค๋ ์ ์กด์ฌ ํ ๊น?
- ํด๋์ค ์ค ํด๋์ค์์ ๋ด์ฉ์ด ์๋ ๋ฉ์๋๋ง ์กด์ฌํ๋ ํด๋์ค๊ฐ ์๋๋ฐ ์ด๋ฐ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ๋ชปํ๊ฒ ํ๊ธฐ ์ํด์ ํด๋์ค ์์ abstract๋ฅผ ๋ถ์ธ๋ค. ๋์ค์ ์์๋ฐ์ ํ์ํ ๋ฉ์๋๋ง ์ค๋ฒ๋ผ์ด๋ฉ ํ์ฌ ์ฌ์ฉํ๋ค ('abstract'๊ฐ ๋ถ์ ๋ฉ์๋๋ ๋ฌด์กฐ๊ฑด ์ค๋ฒ๋ผ์ด๋ฉ ํด์ผํ๋ค.)
์ฆ, ์ถ์ํด๋์ค๋ ๋ ๋ฆฝํด๋์ค ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์์์ ์ํด์๋ง ์กด์ฌํ๋ฉฐ ์ถ์ ํด๋์ค์์
์์๋ฐ์ ํ์ ํด๋์ค์์๋ ๋ฐ๋์ ์ถ์ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ(overriding)ํด์ผํ๋ค.
** 'abstract' ํค์๋๋ ํด๋์ค์ ๋ฉ์๋์์๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉด ๋ฉค๋ฒ ๋ณ์ , ๋ก์ปฌ๋ณ์์์๋ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๋ค
ํด๋์ค - ํด๋์ค ๋ด์ ์ถ์ ๋ฉ์๋๊ฐ ์ ์ธ ๋์ด ์์์ ์๋ฏธํ๋ค.
๋ฉ์๋ - ์ ์ธ๋ถ๋ง ์์ฑํ๊ณ ๊ตฌํ๋ถ๋ ์์ฑํ์ง ์์ ์ถ์ ๋ฉ์๋์์ ์๋ฆฐ๋ค.
'JAVA > ๊ฐ๋ ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์์ฑ์ ํธ์ถ/this();/java (0) | 2020.02.09 |
---|---|
๋ฉค๋ฒ๋ณ์ ์ด๊ธฐํ ๋ฐฉ๋ฒ/๋ช ์์ ์ด๊ธฐํ/์ด๊ธฐํ ๋ธ๋ญ vs ์์ฑ์/java (0) | 2020.02.09 |
[Java] ์ง์ญ๋ณ์์ ์ ์ญ๋ณ์ (0) | 2020.02.06 |