๐ก ์๋ก ๋ค๋ฅธ ํ์ ์ ๋ฐ์ดํฐ์ ๋ฉ์๋๋ฅผ ์ ์ํ์ฌ ์ฌ์ฉ์ ์ ์์ ํ์ ์ ๋ง๋ค ์ ์๋๋ฐ, ์ด๊ฒ์ ํด๋์ค๋ผ๊ณ ํ๋ค. ์ฆ, ํด๋์ค๋ ์ฌ์ฉ์ ์ ์์ ์๋ฃํ์ด๋ค.
๐ก ์บก์ํ๋ ์ ์ง๋ณด์์ฑ ์ฆ๊ฐ(๋ฎ์ ๊ฒฐํฉ๋)๋ฅผ ์ํด ํ๋์ ์ง์ ์ ๊ทผ์ ์ ํํ๊ณ , public ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ ์ ์ผ๋ก ์ ๊ทผํ์ฌ ์ฌ์ฉํ ์ ์๋๋ก ํด๋์ค๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฒ์ด๋ค.
ํด๋์ค๋ฅผ ์์ฑํ ์ ํน๋ณํ ๋ชฉ์ ์ด ์๋ ์ด์ ์บก์ํ๊ฐ ๊ธฐ๋ณธ์ ์ธ ์์น์ผ๋ก ์ฌ์ฉ๋๊ณ ์๋ค.
A. ํ๋์ ์ฌ๋ฐ๋ฅด์ง ์๋ ๊ฐ์ด ๋ค์ด๊ฐ๋ ํต์ ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
B. ํ๋์ ์ด๋ฆ์ด๋ ์๋ฃํ์ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํ๋ ์ชฝ์๋ ์์ ์ํฅ์ ๋ฏธ์น๋ค.
A. ํ๋์ ์ง์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก private ์ ๊ทผ ์ ์ด์ ์ฌ์ฉ
๊ตฌ๋ถ | ๊ฐ์ ํด๋์ค | ๊ฐ์ ํจํค์ง | ์์ ํด๋์ค | ์ ์ฒด |
---|---|---|---|---|
public | O | O | O | O |
protected | O | O | O | |
(default) | O | O | ||
private | O |
B. public ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ ์ ์ผ๋ก ์ ๊ทผํ๋๋ก ์ฌ์ฉ
C. ๋ฉ์๋ ๋ด์ ๊ฐ์ ๊ฒ์ฆํ๋ ๋ก์ง ์ถ๊ฐ
๐ก ์ ์ฐ์ฑ์ ํ๋ณดํ๊ธฐ ์ํด ๊ณตํต์ ์ธ ๊ฒ์ ์ถ์ถํ๊ณ ๊ณตํต์ ์ด์ง ์์ ๊ฒ์ ์ ๊ฑฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ถ์ํ ๊ณผ์ ์ ํตํด ๊ฐ์ฒด(Object)๊ฐ ๋์ถ์ด ๋๋ฉฐ, ์ด๋ฌํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด ํด๋์ค๋ฅผ ์ค๊ณํ๊ฒ ๋๋ค.
์ฆ, ์ถ์ํ๋ ํ์ค์ธ๊ณ์ ๋ณต์กํ ์ฌ๊ฑด์ ๋จ์ํํ์ฌ ์๋ก์ด ๊ฐ์ฒด ์งํฅ ์ธ๊ณ๋ฅผ ์ฐฝ์กฐํด๋๊ฐ๋ ๊ณผ์ ์ด๋ค.
๐ก ํ์ค ์ธ๊ณ์ ๋ชจ๋ ์ฌ๊ฑด(event)๋ ๊ฐ์ฒด์ ๊ฐ์ฒด์ ์ํธ์์ฉ์ ์ํด ์ผ์ด๋๋ค๋ ์ธ๊ณ๊ด์ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๋ ์ด์ฉํ์ฌ ์๋ก์ด ์ธ๊ณ๋ฅผ ์ฐฝ์กฐํ๋ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
๊ฐ์ฒด๊ฐ ์๋ก ์ํธ์์ฉ์ ํ๋ฉฐ ์ฌ๊ฑด์ด ์ผ์ด๋๋ค๋ ๊ฐ๋ ์ ํ์ค ์ธ๊ณ์ ๋ฎ์์์ง๋ง, ๋ค๋ฅธ ์ ์ ๋ฌด์๋ฌผ์ด๋ ๊ฐ๋ ๊ฐ์ ์กด์ฌ๋ค๋ ํ๋์ ์ฃผ์ฒด๋ก ๋ณธ์ธ์ ์ํ๋ฅผ ์ค์ค๋ก ์ ์ดํ๊ณ ํ๋ํ๋ค๋ ๊ฒ์ด ๋ค๋ฅธ ์ ์ด๋ค. (์์ธํ ๊ธฐ๋ฒ โ ์บก์ํ๋ฅผ ์๋ฏธํ๋ค.)
๋ํ ๋ชจ๋ ๊ฐ์ฒด๋ ๋๋ฌด ๋ง์ ์ํํ ์ ์๋ ๊ฒ์ด ์๋ ์ ์ ํ ์ฑ ์์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค. ๋ง์ฝ ๋๋ฌด ๋ง์ ๊ฒ์ ์ํํด์ผ ํ๋ ์ฑ ์์ด ์กด์ฌํ๋ค๋ฉด ์ด๋ ๋ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์ฑ ์์ ๋๋๋ค. (๋จ์ผ ์ฑ ์์ ์์น)
๐ก ๊ฐ์ฒด์ ๊ฐ์ฒด๋ ๋ฉ์ธ์ง(๋ฉ์๋ ํธ์ถ)๋ฅผ ํตํด ์๋ก ์ํธ์์ฉ์ ํ๋ค. ๋ณด๋ด๋ ์ชฝ์ ์ก์ ์, ๋ฐ๋ ์ชฝ์ ์์ ์๋ผ๊ณ ํ๋ฉฐ, ์์ ์๋ ๋ฉ์ธ์ง๋ฅผ ์ ๋ฌ ๋ฐ์ ๊ทธ ๋ฉ์ธ์ง์ ํด๋นํ๋ ๋ด์ฉ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค์ค๋ก ๊ฒฐ์ ํ๋ค. ์ค์ค๋ก ๊ฒฐ์ ํ ๋ฐฉ์๋๋ก ๋ช ๋ น์ด๋ฅผ ์์ฐจ์ ์ผ๋ก ๊ธฐ์ ํ ๊ฒ์ ๋ฉ์๋(method)๋ผ๊ณ ํ๋ค.
์ํธ์์ฉ์ ์ค์ํ ๊ฒ์ ๋ฉ์ธ์ง๋ฅผ ์์ ํ์ฌ ์๋ตํ๋ ์ํธ์์ฉ์ ์ค๊ณํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ค์ํ ๊ฒ์ ์ด๋ฌํ ์ํธ์์ฉ์ ์ค๊ณํ๋ ๊ฒ์ด๋ค. (์ฆ, ํ๋๋ณด๋ค๋ ๋ฉ์๋๋ฅผ ์ค์ ์ผ๋ก ์ถ์ํ ๊ธฐ๋ฒ์ ์ ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์ค๊ณํ๋ ๊ฒ์ด ์ค์ํ๋ค.)
A. ์์คํ ์๊ตฌ์ฌํญ
1. ์นด๋ ์ด์๋ ์๋๊ฑธ๊ธฐ, ์์
๋ ์ดํฐ ๋ฐ๊ธฐ, ๋ธ๋ ์ดํฌ ๋ฐ๊ธฐ, ์๋ ๋๊ธฐ๋ฅผ ํ ์ ์๋ค.
2. ์๋์ฐจ๋ ์๋๊ฑธ๊ธฐ, ์์ผ๋ก๊ฐ๊ธฐ, ๋ฉ์ถ๊ธฐ , ์๋๋๊ธฐ๋ฅผ ํ ์ ์๋ค.
3. ์๋์ฐจ๋ ์ฒ์์ ๋ฉ์ถ ์ํ๋ก ๋๊ธฐํ๊ณ ์๋๋ค.
4. ์นด๋ ์ด์๋ ๋จผ์ ์๋์ฐจ์ ์๋์ ๊ฑด๋ค. ์ด๋ฏธ ๊ฑธ๋ ค์๋ ๊ฒฝ์ฐ ๋ค์ ์๋์ ๊ฑธ ์ ์๋ค.
5. ์นด๋ ์ด์๊ฐ ์์
๋ ์ดํฐ๋ฅผ ๋ฐ์ผ๋ฉด ์๋์ด ๊ฑธ๋ฆฐ ์ํ์ผ ๊ฒฝ์ฐ ์๋์ฐจ๋ ์์์ด 10km/h ์ฆ๊ฐํ๋ฉฐ ์์ผ๋ก ๋๊ฐ๋ค.
6. ์๋์ฐจ๊ฐ ๋ฌ๋ฆฌ๋ ์ค์ธ ๊ฒฝ์ฐ ๋ธ๋ ์ดํฌ๋ฅผ ๋ฐ์ผ๋ฉด ์๋์ฐจ์ ์์์ 0์ผ๋ก ๋จ์ด์ง๋ฉฐ ๋ฉ์ถ๋ค.
7. ๋ธ๋ ์ดํฌ๋ฅผ ๋ฐ์ ๋ ์๋์ฐจ๊ฐ ๋ฌ๋ฆฌ๋ ์ค์ด ์๋๋ผ๋ฉด ์ด๋ฏธ ๋ฉ์ถฐ์๋ ์ํ๋ผ๊ณ ์๋ดํ๋ค.
8. ์นด๋ ์ด์๊ฐ ์๋์ ๋๋ฉด ๋ ์ด์ ์๋์ฐจ๋ ์์ง์ด์ง ์๋๋ค.
9. ์๋์ฐจ๊ฐ ๋ฌ๋ฆฌ๋ ์ค์ด๋ผ๋ฉด ์๋์ ๋ ์ ์๋ค.
B. ํ์ํ ๊ฐ์ฒด
์นด๋ ์ด์, ์๋์ฐจ
C. ์ํธ์์ฉ
- ์นด๋ ์ด์๊ฐ ์์ ํ ์ ์๋ ๋ฉ์ธ์ง (์นด๋ ์ด์๊ฐ ํด์ผ ํ๋ ์ผ)
์๋์ ๊ฑธ์ด๋ผ
์์
๋ ์ดํฐ๋ฅผ ๋ฐ์๋ผ
๋ธ๋ ์ดํฌ๋ฅผ ๋ฐ์๋ผ
์๋์ ๊บผ๋ผ
- ์๋์ฐจ๊ฐ ์์ ํ ์ ์๋ ๋ฉ์ธ์ง (์๋์ฐจ๊ฐ ํด์ผ ํ๋ ์ผ)
์๋์ ๊ฑธ์ด๋ผ
์์ผ๋ก ๊ฐ๋ผ
๋ฉ์ถฐ๋ผ
์๋์ ๊บผ๋ผ
์๋ ๊ฑธ๊ธฐ
--------- ---------- --------
| ์ฌ์ฉ์ | ---> ์๋์ ๊ฑธ์ด๋ผ ---> | ์นด๋ ์ด์ | ---> ์๋์ ๊ฑธ์ด๋ผ ---> | ์๋์ฐจ |
--------- <------------------- ---------- <--------------------- ---------
๊ฐ์ ํ๊ธฐ
--------- ---------- --------
| ์ฌ์ฉ์ | ---> ์์
๋ ์ดํฐ๋ฅผ ๋ฐ์๋ผ ---> | ์นด๋ ์ด์ | ---> ์์ผ๋ก ๊ฐ๋ผ ---> | ์๋์ฐจ |
--------- <------------------------ ---------- <-------------------- ---------
์ ์งํ๊ธฐ
--------- ---------- --------
| ์ฌ์ฉ์ | ---> ๋ธ๋ ์ดํฌ๋ฅผ ๋ฐ์๋ผ ---> | ์นด๋ ์ด์ | ---> ๋ฉ์ถฐ๋ผ ---> | ์๋์ฐจ |
--------- <----------------------- ---------- <-------------- ---------
์๋ ๋๊ธฐ
--------- ---------- --------
| ์ฌ์ฉ์ | ---> ์๋์ ๊บผ๋ผ ---> | ์นด๋ ์ด์ | ---> ์๋์ ๊บผ๋ผ ---> | ์๋์ฐจ |
--------- <------------------- ---------- <------------------ ---------
D. ํด๋์ค ์ค๊ณํ๊ธฐ
์นด๋ ์ด์ ํด๋์ค
- ์์ฑ : ์๋์ฐจ
- ํ์ : ์๋์๊ฑธ์ด๋ผ, ์์
๋ ์ดํฐ๋ฅผ ๋ฐ์๋ผ, ๋ธ๋ ์ดํฌ๋ฅผ ๋ฐ์๋ผ, ์๋์ ๊บผ๋ผ.
์๋์ฐจ ํด๋์ค
- ์์ฑ : ์๋์ํ, ํ์ฌ์์
- ๋ฉ์๋ : ์๋์๊ฑธ์ด๋ผ, ์์ผ๋ก ๊ฐ๋ผ, ๋ฉ์ถฐ๋ผ, ์๋์ ๊บผ๋ผ
๐ก ๊ฐ์ฒด์งํฅ์์ ์ค์ํ ๊ฒ์ ํ์(๋ฉ์๋)์ด์ง๋ง, ๋ฐ์ดํฐ๋ฅผ ์ค์ฌ์ผ๋ก ์ถ์ํ ํ์ฌ ๊ฐ์ฒด ๋ฐ ํด๋์ค๋ฅผ ์ค๊ณํ๋ ๊ฒฝ์ฐ๋ ์กด์ฌํ๋ค. ๋ํ์ ์ผ๋ก DTO ๊ฐ์ ํด๋์ค๊ฐ ์๋ค.
๐ก ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ์ด๊ธฐ ์ํํ ๋ช ๋ น์ด ์๋ ๊ฒฝ์ฐ ๋ฏธ๋ฆฌ ์์ฑํด๋๊ณ , ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ๋จ ํ ๋ฒ ํธ์ถ๋๋ ํจ์์ด๋ค. ์ง๊ธ๊น์ง ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ํด๋์ค๋ช ๋ ํผ๋ฐ์ค๋ณ์ = new ํด๋์ค๋ช (); ์ด๋ ๊ฒ ์ฌ์ฉํด์๋ค. new ๋ค์ ํด๋์ค๋ช ์ ์ฌ์ค ์์ฑ์(constructor)๋ผ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ตฌ๋ฌธ์ด์๋ค.
์์ฑ์ ํจ์์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์๋ฅผ ๊ธฐ๋ณธ์์ฑ์(default constructor)๋ผ๊ณ ํ๋ฉฐ, ๊ธฐ๋ณธ ์์ฑ์๋ compiler์ ์ํด ์๋์ผ๋ก ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ ์ง๊ธ๊น์ง ๋ช ์์ ์ผ๋ก ์์ฑํ์ง ์๊ณ ์ฌ์ฉํ ์ ์์๋ค.
User [id=null, pwd=null, name=null, enrollDate=null]
User [id=user01, pwd=pass01, name=ํ๊ธธ๋, enrollDate=null]
User [id=user02, pwd=pass02, name=์ด์์ , enrollDate=Sun May 07 15:52:53 KST 2023]
User [id=user02, pwd=pass02, name=์ด์์ , enrollDate=Sun May 07 15:52:53 KST 2023]
๐ก ๋์ผํ ํด๋์ค ๋ด์๋ ๋์ผํ ์ด๋ฆ์ ์์ฑ์ ํน์ ๋ฉ์๋๋ฅผ ์์ฑํ์ง ๋ชปํ๋ค. ํ์ง๋ง ๋งค๊ฐ๋ณ์์ ํ์ , ๊ฐฏ์, ์์๋ฅผ ๋ค๋ฅด๊ฒ ์์ฑํ๋ฉด ์๋ก ๋ค๋ฅธ ์์ฑ์๋ ๋ฉ์๋๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ์ ๋์ผํ ์ด๋ฆ์ ์์ฑ์๋ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๊ฐ ์์ฑํ ์ ์๊ฒ ํด์ค๋ค. ์ด๊ฒ์ ์ค๋ฒ๋ก๋ฉ(overloading)์ด๋ผ๊ณ ํ๋ค.
๐ก ๊ธฐ๋ณธ์๋ฃํ, ๊ธฐ๋ณธ์๋ฃํ ๋ฐฐ์ด, ํด๋์ค ์๋ฃํ, ํด๋์ค ์๋ฃํ ๋ฐฐ์ด, ๊ฐ๋ณ์ธ์ ์ด๋ ๊ฒ 5๊ฐ์ง ํํ์ ๋งค๊ฐ๋ณ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
๐ก ์ ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ๋ก๊ทธ๋จ์ด start๋ ์ ํ ๋น ํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ํค์๋์ด๋ค.
static ํ๋๋ ๋ฉ์๋๋ ์ธ์คํด์ค ์์ฑ ์์ด ํด๋์ค๋ช .์ ํตํด ์ ๊ทผํด์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์ฌ๋ฌ ์ธ์คํด์ค๊ฐ ๊ณต์ ํด์ ์ฌ์ฉํ ๋ชฉ์ ์ธ ์์ฑ์ด๋ ํ๋์ ์์ฝ์ด ์๋ฆฌ์ ์ถ๊ฐํ๋ค.
๐ก ๋ณ๊ฒฝ ๋ถ๊ฐ์ ์๋ฏธ๋ฅผ ๋ด๊ณ ์๋ ํค์๋์ด๋ค.
(์์๊ณผ ๊ด๋ จํ์ฌ ํด๋์ค๋ ๋ฉ์๋์ ์์ฝ์ด ์๋ฆฌ์ ์ฐ์ด๋ฉด ๋์ด์ ํ์ ํด๋์ค์์ ๊ฐ์ง์ง ๋ชปํ๋ ๋ง์ง๋ง ํด๋์ค๋ ๋ฉ์๋๋ฅผ ์๋ฏธํ๊ฒ ๋๋ค.)
๐ก ํด๋์ค์์ ์ฐ์ด๋ ๋ณ์๋ ํฌ๊ฒ ํด๋์ค ๋ณ์, ์ธ์คํด์ค ๋ณ์(ํด๋์ค์ ํ๋), ์ง์ญ ๋ณ์๋ก ๊ตฌ๋ถ๋๋ค.
ํด๋์ค ๋ณ์๋ static ํค์๋๋ฅผ ๊ฐ์ง๊ณ ํ๋์ ์ ์ธํ๋ ๋ณ์๋ก ๋ฉ๋ชจ๋ฆฌ์ static์์ญ์ ์ฌ์ฉํ๋ค.
์ธ์คํด์ค ๋ณ์๋ static ํค์๋ ์์ด ํด๋์ค์ ํ๋์ ์ ์ธํ๋ ๋ณ์๋ก ๋ฉ๋ชจ๋ฆฌ์ heap์์ญ์ ์ฌ์ฉํ๋ค.
์ง์ญ ๋ณ์๋ ๋ฉ์๋, ์์ฑ์, ์ด๊ธฐํ ๋ธ๋ก ๋ด๋ถ์์ ์ ์ธํ๋ ๋ณ์๋ก ๋ค๋ฅธ ๋ณ์๋ค๋ณด๋ค ์ฐ์ ๊ถ์ ๊ฐ์ง๋ค.
๋ณ์ | ์์ฑ์๊ธฐ | ์๋ฉธ์๊ธฐ |
---|---|---|
ํด๋์ค ๋ณ์ | ํ๋ก๊ทธ๋จ ์์ ์ | ํ๋ก๊ทธ๋จ ์ข ๋ฃ ์ |
์ธ์คํด์ค ๋ณ์ | ์ธ์คํด์ค ์์ฑ ์ | ์ฐธ์กฐํ์ง ์์ ์ |
(GC ์๊ด) | ||
์ง์ญ ๋ณ์ | ๋ฉ์๋ ํธ์ถ ์ | ๋ฉ์๋ ์ข ๋ฃ ์ |
๐ก ์ด๊ธฐํ ๋ธ๋ญ์ ํด๋น ํด๋์ค์ ์ธ์คํด์ค ์์ฑ ์ ์ด๋ค ์์ฑ์๋ฅผ ํ์ฉํด์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋๋ผ๋ ๊ณตํต์ ์ผ๋ก ์คํ ๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ ๋ธ๋ญ์ด๋ค.
๐ก ๋ ํผ๋ฐ์ค ๋ณ์์ ๋ํ ๋ฐฐ์ด๋ก ๋์ผํ ํ์ ์ ์ฌ๋ฌ ์ธ์คํด์ค๋ค์ ๋ฐฐ์ด๋ก ๊ด๋ฆฌํ ์ ์๋ค.
Car[] carArray = new Car[5];
carArray[0] = new Car("ํ๋ผ๋ฆฌ", 300);
carArray[1] = new Car("๋๋ณด๋ฅด๊ธฐ๋", 350);
carArray[2] = new Car("๋กค์ค๋ก์ด์ค", 250);
carArray[3] = new Car("๋ถ๊ฐํฐ๋ฒ ์ด๋ก ", 400);
carArray[4] = new Car("ํฌํฐ", 500);
for (int i = 0; i < carArray.length; i++) {
carArray[i].driveMaxSpeed();
}
ํ๋ผ๋ฆฌ์ด(๊ฐ) ์ต๊ณ ์์ 300km/h๋ก ๋ฌ๋ ค๊ฐ๋๋ค.
๋๋ณด๋ฅด๊ธฐ๋์ด(๊ฐ) ์ต๊ณ ์์ 350km/h๋ก ๋ฌ๋ ค๊ฐ๋๋ค.
๋กค์ค๋ก์ด์ค์ด(๊ฐ) ์ต๊ณ ์์ 250km/h๋ก ๋ฌ๋ ค๊ฐ๋๋ค.
๋ถ๊ฐํฐ๋ฒ ์ด๋ก ์ด(๊ฐ) ์ต๊ณ ์์ 400km/h๋ก ๋ฌ๋ ค๊ฐ๋๋ค.
ํฌํฐ์ด(๊ฐ) ์ต๊ณ ์์ 500km/h๋ก ๋ฌ๋ ค๊ฐ๋๋ค.