์ด๋ฒ ์ฃผ๋ง ํ , ์ผ์ ํตํด์ ์ค์ค๋ก ์ต์ํด์ง๋ ์ฒซ ๊ฑธ์ ๋ชฉํ๋ฅผ ์ฑ๊ณตํ๋ค. ๊ทธ๋ฆฌ๊ณ โJava์ ์ ์โ์ ํ์ ๋๊ผ๋ค.
Java์ ์ ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด๋ถ๋ถ์ ํ์ตํ๋๋ฐ ํ ์์ผ, ์ผ์์ผ ํฉ์ณ์ 35์๊ฐ์ด ์์๋์๋ค. ๋ฐฅ๋จน๊ณ ์ด๋ฐ ์๊ฐ์ ๋นผ๋๋ผ๋ ์ต์ 25์๊ฐ์ ์ด์ด์ ๋ชฐ์
ํ๋๊ฒ ๊ฐ๋ค. ์ค์ ๊ฐ์๋ 446๋ถ, 8์30๋ถ์ ๋ ๋ถ๋์ด๋ค. ๋ถ๋์ ๋นํด 2~3๋ฐฐ ์ ๋ ์๊ฐ์ด ์์๋๋ค.
์ฐ์ ์ดํด๊ฐ ์๋๋ ๋ถ๋ถ์ ๋ฌด์กฐ๊ฑด ๋ฉ์ถ๊ณ ๋ค์ ๋๋ ค๋ณด์๊ณ , ๋จ๊ถ์ฑ ๊ฐ์ฌ๋์ด ๊ทธ๋ฆฌ๋ผ๋ฉด ๊ทธ๋ฆฌ๊ณ ์ค์ตํ์๋ฉด ์ค์ต์น๊ณ ์ฑ
์๋ ํ๊ธฐํ๊ณ ์์คํ์ผ์๋ ํ๊ธฐํ๊ณ ์ปค๋ฐํธ์ํ๊ณ ๊ฐ ์ฅ์ ๋์ด๊ฐ๋๋ง๋ค ์ปค๋ฐ๋ฉ์์ง๋ก ๊ฐ๋ต ์์ฝ์ ๋จ๊ฒจ์ ํ๋ฒ ๋ ํต์ฌ์ ์์ฝํ๋ ๋ฑ ๋ถ๊ฐ์ ์ผ๋ก ์๊ฐ์ด ์๊ฐ๋ณด๋ค ๋ง์ด ์ฌ์ฉ๋๊ธด ํ๋ค. ํ์ง๋ง ์ฐ์ ๋ชฉํ๋กํ๋ ๋ฒ์๊น์ง ๋ฑ ํ๋ฒ ์๊ฐ์ ์ ํ๊ณ ๋ฌ๋ฆฌ๊ณ ๋๋ ๋ฟ๋ฏํ๋ค. ์ด๋ค ์ด๋ ค์ด ๊ฒ์ด๋๋ผ๋ ์ด ์ฑ
์ ํ์ ๋ฏฟ๊ณ ๊ฐ์ด ๊ฐ๋ฉด ๋ ๊ฒ ๊ฐ์ ์ ๋ขฐ๊ฐ ์๊ฒผ๋ค. ๋์ณค๋ ๊ฒ๋ค์ ๋ง์ด ํ์ ํ ์ ์์๊ณ , ์ ๊ธฐ๋ณธ๊ฐ๋
์ด ํ๋ค๋ ธ๋์ง โ์์ฃผ ๋ง์โ ์์ธ๋ค์ ์ฐพ์๋ธ ๊ฐ์ฅ ๋ณด๋์ฐฌ ์ง์ค ๊ณต๋ถ์๋ค.
๋ฌผ๋ก ์์๊ฐ์ ๋ชจ๋ ๊ฒ์ ์ธ์ฐ์ง ๋ชปํ๊ณ ๋ฒ๋ฒ
์ผ ์ ์์ง๋ง, ์์ผ๋ก ์ด ๋ถ๋ถ์ ๊ณ์ ํ์ํ๋ฉด์ ํ๋๋ ๋ฐฐ์ฐ๊ณ , ๋ ๋ฐ๋ณตํ๊ณ , ๋ ๋ฐฐ์ฐ๊ณ ๋ฐ๋ณตํ๊ณ ์ ์ฐจ ๋ฅ์ํด์ง๊ณ ์ถ์ด์ง ๊ธฐ์ด๊ฐ ์ธํ
๋๋ ๋๋์ด๋ค. ์ฒ์์ ์ด๋ ค์ด์ค ์์๋ค. ๊ฐ๋ฉด ๊ฐ์๋ก ๋ด๊ฐ ๋ชจ๋ ๋ค์์๋ ์ฉ์ด๋ค, ๊ฐ๋
๋ค์ด ๋ฑ์ฅํ์ง๋ง ์ง๊ธ ์ต์ํ์ง ์๋ค๋๊ฒ์์ ์ ๋ง ์ผ๋ง๋ ๋ง์๊ฒ์ ๋์ณค๊ณ ์ดํด๋ฅผ ํ์ง ๋ชปํ๊ณ ์ง๋๊ฐ๋์ง ์๊ฒ๋์๋ค. ๊ทธ๋ฐ ๋ถ๋ถ๋ค์ ์ฐจ๊ทผ ์ฐจ๊ทผ, ์ง๊ธ ์์ค์ ๋ง๊ฒ ์ด๋ป๊ฒ ์ต์ํด์ ธ๋๊ฐ์ผ ํ๋์ง, ์ง๊ธ ๋น์ฅ ์ด๋ค๊ฒ์ ์ง์คํด์ผ ํ๋์ง ๊ทธ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์
จ๋ค. ์ด์ ์์ผ ์ด ๊ฐ์๊ฐ ์ผ๋ง๋ ์ฝ๊ฒ ์๋ ค์ฃผ๋, ์ผ๋ง๋ ๊ธฐ๋ณธ๊ธฐ์ ๋ํด์ ์ ์๋ ค์ฃผ๋ ๊ฐ์์ธ์ง๋ ๊นจ๋ฌ์๋ค.
์๊ธฐ ์ ์ ๋น ๋ฅด๊ฒ ์ ์ฒด์ ์ผ๋ก ์ปค๋ฐ ๋ฉ์์ง๋ก ๋จ๊ฒจ๋ ์์ฝ์ ํ๋ฒ ๋ ๋ธ๋ก๊ทธ๋ก ์ฎ๊ฒจ ์ ์ผ๋ฉด์ ์ค์ ๋ถ๋ถ์ ํ๋ฒ ๋ ์ญ ์ฝ์ด๋ณด๊ณ ์ ํ๋ค. ๊ธธ๋ฉด ์ธ์ธ ์ ์๋ค. ์งง๊ฒ์ฐ๊ณ ํ๋ฆฐํธํด์ ๋ฒฝ์ ๋ถ์ฌ๋๊ณ ๊ณ์ ์ด๊ฒ์ ๋ํด ์๊ฐํ์. ๋จ๊ถ์ฑ ๊ฐ์ฌ๋์ ๋ฌ์ฌ ๊ทธ๋๋ก์ธ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด๊ฒ ๊ฐ์ฅ ๋์๊ฒ ์ฝ๊ฒ ์ดํด๋์๋ค.
๊ฐ์ฒด์งํฅ
โข
์ฌ์ฌ์ฉ์ฑ
โข
์ ์ง๋ณด์
โข
์ค๋ณต์ฝ๋์ ๊ฑฐ
ํด๋์ค๋?
โข
ํด๋์ค๋ ์ค๊ณ๋
โข
์ธ์คํด์คํ๋ก ์ธ์คํด์ค(๊ฐ์ฒด)๋ฅผ ์์ฑ
์ธ์คํด์ค(๊ฐ์ฒด)๋?
โข
์ค๊ณ๋๋ก ๋ง๋ ๊ฐ์ฒด
โข
๋ฉค๋ฒ๋ณ์์ ๋ฉ์๋๋ก ๊ตฌ์ฑ
โข
์ธ์คํด์ค๋ iv๋ฌถ์์ด๋ค. ๊ฐ์ฒด ๋ฌด์กฐ๊ฑด iv๋ฅผ ์๊ฐ
๊ฐ์ฒด ์์ฑ๋ฒ
Tv t = new Tv();
ํด๋์ค๋ช
(ํ์
) ์ฐธ์กฐ๋ณ์๋ช
= new ์์ฑ์([์ธ์]);
๊ฐ์ฒด ์ฌ์ฉ๋ฒ
t.channel = 8;
์ฐธ์กฐ๋ณ์๋ช
.๋ํธ์ฐ์ฐ์ ๋ฉค๋ฒ(==๋ณ์) = ๋์
์ฐ์ฐ์ ๊ฐ; ์ผ๋กํ ๋น
์ฐธ์กฐ๋ณ์๋ช
.๋ฉ์๋๋ช
([์ธ์]); ๋ฉ์๋ ํธ์ถ(==๊ตฌํ๋ถ์คํ)
๋ณ์ variable
iv ์ธ์คํด์ค ๋ณ์ : ํด๋์ค์์ญ ์ ์ธ int iv; โ ์ธ์คํด์ค ์์ฑ๋์ด์ผ ์ฌ์ฉ๊ฐ๋ฅ == ๊ฐ์ฒด๋ง์ ์์
cv ํด๋์ค ๋ณ์ : ํด๋์ค์์ญ ์ ์ธ static int cv; โ์ธ์ ๋ ์ฌ์ฉ๊ฐ๋ฅ == ์ธ์คํด์ค ์์ฑ์์ด๋๋จ ์ด๋ฏธ ๋ก๋ฉ์ ๋ฉ๋ชจ๋ฆฌ์
! ๊ณตํต์์์ถ์ฒ
lv ์ง์ญ ๋ณ์ : ํด๋์ค์์ญ ์ธ ์ ์ธ void hi(){int i;} โ (๋ฉ์๋, ์์ฑ์, ๋ธ๋ญ ๋ฑ {}์์ ๊ฐํ๊ฒฝ์ฐ ๊ทธ ๋ด๋ถ์์๋ง ์ ์ธ-์ฌ์ฉ-์๋ฉธ)
์ฐธ๊ณ ๋ก ๋งค๊ฐ๋ณ์๋ ์ง์ญ๋ณ์์!
๋ฉ์๋ method
๋ฉ์๋๋ ํน์ ์์
์ ์ํํ๋ ๋ฌธ์ฅ๋ค์ ๋ฌถ์์
* ์ฌ์ฌ์ฉ์ฑ, ์ค๋ณต์ฝ๋์ ๊ฑฐ, ๊ตฌ์กฐํ๋ฅผ ์ํด ์ฌ์ฉ
* ๋ฉ์๋๋ ํด๋์ค ์์ญ์์๋ง ์ ์ธ ๊ฐ๋ฅ
ํธ์ถ์คํ(Call Stack)
ํ ์ฝ๋์ฉ ์์ธ๋ค. ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ์. ์ฐ๋ ๋ ์ ๊น์ง๋ ๊ทธ๋ฅ ํ๋์ํ, ๋ค์ ์คํ, ์ข
๋ฃ, ๊ทธ์ ๋๊ธฐ ๋ฑ ๊ทธ๋ฆผ ๊ธฐ์ต
๊ธฐ๋ณธํ๋งค๊ฐ๋ณ์ ์ฐธ์กฐํ๋งค๊ฐ๋ณ์
๊ธฐ๋ณธํ ๋งค๊ฐ๋ณ์ ex: change(d.x);
- ๋ณ์์ ๊ฐ์ ์ฝ๊ธฐ๋ง ํ ์ ์๋ค.(๋ฐ๊ฟ๋ดค์ ์๊ธฐ๋ง ๋ฐ๋์๋ค๊ฐ ์๋ฉธ)
์ฐธ์กฐํ ๋งค๊ฐ๋ณ์ ex: change(d);
- ๋ณ์์ ๊ฐ์ ์ฝ๊ธฐ, ์์ ํ ์ ์๋ค.
- ์๊ฐ์ฒด๋ก ์ฃผ์๋ฅผ ๋ณต์ฌํ๊ณ ์ค์ ๋ณ์๋ฅผ ๋์ผํ๊ฒ ๋ฐ๋ผ๋ณด๋ ์๋ณ์ ์์ฑํ๊ธฐ๋๋ฌธ
์ค๋ฒ๋ก๋ฉ(Overloading)
๊ฐ์ ์ด๋ฆ์ ๊ธฐ๋ฅ์ด ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ๊ฐ ์ ์ํ๋๊ฒ
- ๋ฉ์๋ ์ด๋ฆ์ด ๊ฐ์์ผ ํ๋ค.
- ๋งค๊ฐ๋ณ์ ๊ฐ์ ๋๋ ํ์
์ด ๊ฐ์์ผํ๋ค.
- ๋ฐํ ํ์
์ ์ํฅ์๋ค.
์์ฑ์(Constructor)
์ธ์คํด์ค(๊ฐ์ฒด)์ด๊ธฐํ ๋ฉ์๋์ด๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก iv๋ฅผ ์๊ฐํ์! iv์ด๊ธฐํ๋ฅผ ์ํ ๋ฉ์๋๋ค.
- ์์ฑ์์ ์ด๋ฆ์ ํด๋์ค์ ๊ฐ์์ผ ํ๋ค
- ์์ฑ์๋ ๋ฐํ ๊ฐ์ด ์๋ค
- ์์ฑ์๊ฐ ํ๋๋์์ผ๋ฉด ์ปดํ์ผ๋ฌ๊ฐํด์ฃผ์ง๋ง ํญ์ ์์ฑํ์
- ๊ธฐ๋ณธ์์ฑ์๊ฐ ์์ผ๋ฉด ๊ธฐ๋ณธ์์ฑ์ํธ์ถํ๋ฉด ์ค๋ฅ๋๋ค
๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์
- ๋งค๊ฐ๋ณ์๋ lv๋ค
- ๊ฐ์ฒด ์์ฑ ์ iv๋ฅผ lv๋ก ์ด๊ธฐํ ํ ์ ์๋ค
- Tv(value1, value2);์ฒ๋ผ ๊ธฐ๋ณธ ์์ฑ์์ iv๋ฅผ ์ด๊ธฐํ
* this.iv = lv; ๋ก iv์ lv์ด๋ฆ์ด ๊ฐ์๊ฒ์ ๊ตฌ๋ถ ํ์
โ this.iv๋ ์ฌ๊ธฐ์ Tv class์ iv๋ค.
์ด๊ธฐํ(Initialization)
๋ณ์์ ์ด๊ธฐํ
- 1]์๋ ์ด๊ธฐํ -> 0 or null or false etc..
- 2]๊ฐ๋จ ์ด๊ธฐํ -> "=" ๋์
์ฐ์ฐ์๋ฅผ ํตํ ์ด๊ธฐํ
- 3]๋ณต์ก ์ด๊ธฐํ
-- cv static๋ธ๋ก์ด๊ธฐํ
-- iv ๋ธ๋ก์ด๊ธฐํ
-- iv ์์ฑ์๋ธ๋ก์ด๊ธฐํ
* cv์ด๊ธฐํ๋ ํด๋์ค ๋ก๋ฉ(๋ฉ๋ชจ๋ฆฌ์ฌ๋ผ๊ฐ)์ ํ๋ฒ๋ง
* iv์ด๊ธฐํ๋ ๊ฐ์ฒด ์์ฑ ๋ ๋ ๋ง๋ค
์์(Inheritance)๊ณผ ํฌํจ ํด๋์ค๊ฐ์ ๊ด๊ณ
ํด๋์ค๊ฐ์ ๊ด๊ณ๋ 2๊ฐ๋ก ๊ตฌ๋ถ๋๋ค.
- 1]์์(is a)
-- ๊ธฐ์กด ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ์๋ก์ด ํด๋์ค๋ฅผ ์์ฑํ๋๊ฒ
-- class Child extends Parent{} ์ฒ๋ผ extends๋ก ๊ตฌํ
-- ์์์ ๋ถ๋ชจ์ ๋ฉค๋ฒ๋ฅผ ๋ชจ๋ ๋ฌผ๋ ค๋ฐ๋๋ค(์ต์ ๊ฐ๊ฑฐ๋ ๋ง์)
-- ์์ฑ์, ์ด๊ธฐํ ๋ธ๋ญ์ ์์๋์ง ์์
-- ์กฐ์์ ํ๋๋ง(๋จ์ผ์์) ํ์ฉ
--- ๋ฉค๋ฒ๊ฐ ์ด๋ฆ์ด ๋์ผํ๊ฑฐ๋ ๋ฑ ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง๋ ๋จ์ ๋๋ฌธ
- 2]ํฌํจ(has a)
-- ์ด ๋ํ ๊ธฐ์กด ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ
-- ํด๋์ค ์์ ๋ค๋ฅธ ํด๋์ค ํ์
์ ์ฐธ์กฐ๋ณ์๋ฅผ ์ ์ธ
-- class Circle{Point c = new Point();}์ฒ๋ผ ์ฐธ์กฐ๋ณ์๋ฅผ ํฌํจ
* ๋ชจ๋ ํด๋์ค์ ์ต์์ ์กฐ์ Object ํด๋์ค
- toString(), equals() ๊ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ด์
- ํด๋์ค ๋ถ๋ชจ๊ฐ ์์ผ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ extends Object๋ฅผ ์๋์์ฑ
์ค๋ฒ๋ผ์ด๋ฉ(Overriding)
์ค๋ฒ๋ผ์ด๋ฉ์ด๋ ์์๋ฐ์ ๋ฉ์๋์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋๊ฒ, ์ค๋ฒ๋ผ์ด๋๋ ๋ฌด์กฐ๊ฑด ์์๊ณผ์ฐ๊ด
- ๊ตฌํ๋ถ๋ฅผ ์์ ํ์ฌ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฒ์ด๋ผ ๋ด
* ์ค๋ฒ๋ผ์ด๋ฉ์ ์กฐ๊ฑด
- 1.๋ฉ์๋ ์ ์ธ๋ถ๊ฐ ์กฐ์ํด๋์ค ๋ฉ์๋์ ์ผ์นํด์ผ ํ๋ค
- 2.์ ๊ทผ์ ์ด์๋ ์กฐ์ํด๋์ค๋ณด๋ค ์ข๊ฒ ๋ณ๊ฒฝ ํ ์ ์๋ค
- 3.์กฐ์๋ณด๋ค ๋ง์ ์์ธ๋ฅผ ์ ์ธ ํ ์ ์๋ค
- 4.์ธ์คํด์ค๋ฉ์๋๋ฅผ ์คํํฑ๋ฉ์๋๋ก ๋๋ ๋ฐ๋๋ก ๋ณ๊ฒฝ๋ถ๊ฐ
์ค๋ฒ๋ก๋ฉ๊ณผ ์ค๋ฒ๋ผ์ด๋ฉ ๋น๊ต - ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ ์ ํ ์๊ด ์๋ค
- ์ค๋ฒ๋ก๋ฉ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ก์ด ๋ฉ์๋(New)
- ์ค๋ฒ๋ผ์ด๋ฉ์ ์กฐ์์ผ๋ก๋ถํฐ ์์๋ ๋ฉ์๋ ์์ (Modify)
super์ this
- super๋ ๋์ ๋ถ๋ชจํด๋์ค๋ฅผ ์ง์นญ(์์ผ๋ฉด ์ต์์ Object)
- this๋ ๋์์ (๋ถ๋ชจ์๊ฒฝ์ฐ ๋ถ๋ชจ์์ )
* Objectํด๋์ค๋ฅผ ์ ์ธํ ๋ชจ๋ ์์ฑ์ ์ฒซ์ค์ super() ๋๋ this()๋ฅผ ํตํด ์์ฑ์๋ฅผ ํธ์ถํด์ผํจ, ์ปดํ์ผ๋ฌ๊ฐ super()๋ฅผ ์๋์ผ๋ก ๋ถ์ด๋๋ฐ ์์์น๋ชปํ ์ค๋ฅ๊ฐ ๋ฐ์ ๊ฐ๋ฅ
ํจํค์ง์ ํด๋์คํจ์ค ์ค์
ํจํค์ง๋ ํด๋, ์ ์ธ์ ํ์ผ์ ํ๋ฒ ๋งจ ์
String ํด๋์ค ์ค์ ์ด๋ฆ์ java.lang.String์ผ๋ก java.lang์ด ํจํค์ง, String์ด ํด๋์ค
CLASSPATH๋ฅผ ์ถ๊ฐํ์ฌ PACKAGE.CLASSNAME์ผ๋ก ์ฐพ์๊ฐ์
- ํ๊ฒฝ๋ณ์์ ๋น์ทํ์ง๋ง export CLASSPATH๋ก ์ ๊ทผํ๋ค.
- ์์ธํ ๋ด์ฉ์ ์ฃผ์ ์ฐธ๊ณ
CLASSPATH="/Users/inyongkim/Documents/JavaJungsukPrac/JavaJungsukPrac/out/production/JavaJungsukPrac:$CLASSPATH"
JavaScript
๋ณต์ฌ
์ํฌํธ(Import)
์ปดํ์ผ๋ฌ์๊ฒ ์์คํ์ผ์ ์ฌ์ฉ๋ ํด๋์ค ์ ๋ณด ์ ๊ณต ํ๋ ๊ฒ
- ์ด๋ค ํจํค์ง์ ์์๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ง ๊ฒฝ๋ก๋ฅผ ์ ๊ณต
- import packagename.classname ์ฒ๋ผ ์ฌ์ฉ
- import java.util.Scanner ๋ฅผ ์๊ฐํ์
- .*์ ํด๋์ค๋ง ๋ถ๋ฌ์ด์ ๊ธฐ์ตํ์, ํจํค์ง๋ ์๋จ.
* Static Import๋ ์๋ก System.out.println();์ด๋ผ ํ ๋,
- import java.lang.System.out; ์ ํตํด ์์คํ์ผ์์
- println("Hi"); ๋ง์ผ๋ก๋ ์ถ๋ ฅํ ์ ์๋ ๊ฒ ์ฒ๋ผ,
- static ๋ฉค๋ฒ(ํด๋์ค๋ฉค๋ฒ-๊ณตํต, ์ธ์คํด์ค์์ด์ ๊ทผO)๋ฅผ ํธ์ถ ํ ๋ ํด๋์ค๋ช
.์ ์๋ต ํ์ฌ ์ ๊ทผ ํ ์ ์๋๋ก ํด์ค
- ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํ ์ ์์ผ๋ ์ ๋งํ๋ฉด import๋ฅผ ํด์ค์ ๊ฐ์์ฑ์ ๋์ด๋ํธ์ด ์ข์ ์ ์๋ค
์ ์ด์(Modifier)
์ ๊ทผ ์ ์ด์
- public ์ ํ์์(all)
- protected ๋ค๋ฅธ ํด๋์ค ์์๊น์ง(ํด๋+์์)
- (default) ๊ฐ์ ํจํค์ง๊น์ง(ํด๋)
- private ๊ฐ์ ํด๋์ค๊น์ง๋ง(ํ์ผ)
* ์ ์ด์
- static ๊ณตํต์, cv, cm <=> im, iv์ ๋ฐ๋๋ก ์๊ฐํ์
- final ๋ง์ง๋ง, ๋ณ๊ฒฝ๋ ์์๋
-- final ๋ณ์๋ ์์๊ฐ๋จ ๋ณ๊ฒฝ๋ถ๊ฐ
-- final ๋ฉ์๋๋ ์์๋ถ๊ฐ =>๊ทธ๋์ ์ค๋ฒ๋ผ์ด๋ฉ๋ ์๋จ
- abstract ์ถ์์, ๋ฏธ์์ฑ์ -> ์ ์ธ๋ถ๋ง ์์ฑ
-- ์ถ์๋ฉ์๋๊ฐ์์ผ๋ฉด ๊ทธ ํด๋์ค๋ ์ถ์ํด๋์ค๊ฐ๋จ
-- ์ถ์ํด๋์ค๋ฅผ ์์๋ฐ์ ์์์ด ์ค๋ฒ๋ผ์ด๋ฉ์ผ๋ก ๊ตฌํ๋ถ๋ฅผ ์์ฑํด์ผ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์์
๋คํ์ฑ
๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ ์ฐธ์กฐ๋ณ์ ํ์
๊ณผ ๊ฐ์ฒด ํด๋์ค๋ฅผ ์ผ์น์์ผ์๋ค.
- ex) Tv t = new TV();
* ์์์ ํ๋ค๋ฉด, ๊ทธ๊ฒ ๋ํ ๋ณดํต ์ผ์น์์ผ์์๋ค.
- ex) CaptionTv ctv = new CaptionTv();
* ํ์ง๋ง ์กฐ์ํด๋์ค ํ์
์ฐธ์กฐ๋ณ์์ ์์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ๋ฃ์ ์ ์๋ค.
- ex) Tv tv = new CaptionTv();
- CaptionTv๊ฐ ๋ฉค๋ฒ(๊ธฐ๋ฅ)์ด ๊ฐ๊ฑฐ๋ ๋๋ง๋ค.
-- ๊ทธ๋ฐ๋ฐ๋ Tv ํ์
(๊ธฐ๋ฅ์ด ์ ์) ๊ฒ์ผ๋ก๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ค. ์ด๊ฒ์ด ๋คํ์ฑ(์ฌ๋ฌํํ๋ก ๋ง๋ค์ ์๋ค)๋ ๊ฒ
-- ์ฐ์ ๋ฐ๋๋ก ์์ํ์
์ผ๋ก๋ ์กฐ์๊ฐ์ฒด๋ฅผ ๋ง๋๋๊ฒ์ด ํ์ฉ๋์ง ์๋๋ค.
-- ๊ทธ๋ผ, ๋ฉค๋ฒ(๊ธฐ๋ฅ)์ด ๋ ์ ์๊ฒ์ ๋ง๋๋๋ฐ ์ ์ข๋ค๋ ๊ฒ์ธ๊ฐ? ์ฅ์ ์ธ๊ฒ์ธ๊ฐ?
-- ๋ค์ ์ค์ต์ ์ด์ด๊ฐ๋ฉด์ ์ ๋ฆฌ ์ถ๊ฐ
์ฐธ์กฐํ ๋ณ์ ํ๋ณํ
์ฌ์ฉ๊ฐ๋ฅํ ๋ฉค๋ฒ ๊ฐฏ์ ์กฐ์ !
- ๋ฆฌ๋ชจ์ฝ ๋ฐ๊พธ๊ธฐ(๊ธฐ๋ฅ๋ฒํผ ๊ฐฏ์ ๋ฐ๋!)
b instanceof A
b๊ฐ A์ ์์์ธ์ง ํ๋ณ๊ฐ๋ฅ=๋ณํ๊ฐ๋ฅ์ฌ๋ถ์ฒดํฌ
- ์กฐ์ฌํ ๊ฑด ์กฐ์(๋ณธ์ธ,๋ถ๋ชจ๋๋๊ทธ์๋ ๋ค true๋ค)
- ์ค์ ๋ก ์ค์ํ๊ฑด ์ฐธ์กฐ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ์ค์ ๊ฐ์ฒด์ ๋ฉค๋ฒ
- ํ๋ณํ์ ์กฐ์-์์๊ด๊ณ๋ง ๋ฐ์ง์ง ์ธ์ค๋ฉค๋ฒ๋ ์ ๊ฒฝ์์ด๋ค!
๋คํ์ฑ์ ์ฅ์ 1. ๋คํ์ ๋งค๊ฐ๋ณ์
์กฐ์(๋ถ๋ชจ)ํ์
์ ์ฐธ์กฐ๋ณ์๋ก ์์(์์)๊ฐ์ฒด๋ฅผ ๋ฉ์๋ ๋งค๊ฐ๋ณ์ ์ ๋ฌํ๋ฉด ์ฝ๋์ค๋ณต์ ์ ๊ฑฐ ํ ์ ์๋ค.
- ๋ฉ์๋๋ฅผ buy(Tv t), buy(Com c), Buy(Aud a) ์ฒ๋ผ ํธ์ถํด์ผํ๊ณ , ๊ฐ ๋ฉ์๋๋ฅผ ๊ตฌ์ฑํด์ผํ๋ค. ํ์ง๋ง,
- ์กฐ์ํ์
Product๋ฅผ ์์ํ๋ฉด, ๊ฐ ์ํ์ ๋ถ๋ชจํด๋์ค ํ์
Product p=์ new Tv();, new Com; new Audio; ์ฒ๋ผ ๋ถ๋ชจํ์
์ ์์๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , buy(p) ์ธ์์ ๋ฌ ํธ์ถ ๊ฐ๋ฅ
- ํธ์ถ์ ๋ฐ๋ ๋ฉ์๋ buy(Product p)์ฒ๋ผ ํ์
์ด ์ผ์นํ๋ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋๋ฐ ๊ทธ ์ค์ง ๊ฐ์ฒด๋ ์์๊ฐ์ฒด๋ค์ธ Tv, Com, Audio๋ค์ธ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๊ฐ ์ํ๋ณ ์ค์ง ๊ฐ์ฒด๋ ๊ตฌ๋ถ๋์์ง๋ง ๋ฉ์๋ ์์ฒด๊ฐ ์ธ์-ํ๋ผ๋ฏธํฐ ํ์
์ด ์ผ์นํด 1๊ฐ์ ๋ฉ์๋๋ก ๊ณตํต ๋ถ๋ถ๋ค์ ์ฒ๋ฆฌ ํ ์ ์๋ค. ํ์ ์ ์ฐธ์กฐ๋ณ์ ํ๋ณํ์ผ๋ก ๊ฐ์ฒด์ ๋ฉค๋ฒ๋ฅผ ๋ค์ ์ฌ์ฉํ ์ ์๋ค.
๋คํ์ฑ์ ์ฅ์ 2. ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด๋ก ๋ค๋ฃจ๊ธฐ
- ์ฐธ์กฐ๋ณ์๋ง ์กฐ์ํด๋์ค ํ์
์ด๋ผ๋ฉด ๊ฐ์ฒด๋ฅผ ๋ฐ์ ์ ์๋ค?
- ๊ทธ๋ผ ๋ฐฐ์ด ๋ํ ๊ฐ์ฒด, ๋ฒกํฐ ๋ฑ ๋ฐฐ์ด๋ค๋ ๊ฐ์ฒด๊ณ ,
- ์กฐ์ ํ์
(ex)Product Arr[] = new Product[10];๊ณผ ๊ฐ์ด ๋ฐฐ์ด๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค๋ฉด? ๋๊ฐ์ด ์ธ์์ ๋ฌ๊ณผ ๋ฉ์๋ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ๋ผ ์ ์๋ค๋ ๋ป!
- ๋ฐฐ์ด ๊ฐ์ฒด ์์ ์ค์ ์ธ์คํด์ค์ธ ์์ ์ธ์คํด์ค์ ์ฃผ์๊ฐ์ ๋ ์ฐธ์กฐ ํ ์ ์๊ธฐ ๋๋ฌธ
* Array๋ ์ข์ง๋ง ๋ฐฐ์ด ํฌ๊ธฐ๊ฐ ์ด๊ธฐํ์ ๊ณ ์ ๋์ง๋ง, Vector, Collection๋ฑ์ ํ์ฉํ๋ฉด ๋ชฉ์ ์ ๋ง๊ฒ ํ ์ ์๋ค!
* ์ค์ํ ๊ฒ์ ๋ถ๋ชจํ์
์ ์ฐธ์กฐ ๋ณ์๋ก ์์๋ฐ์ ์์๋ค์ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด์ ๋ฃ์ด์ผ ํ๋ฉฐ, ํ์ฉ๋์ง ์๋ (ex, ์์ ๋ฉค๋ฒ๊ฐ null์ด ๋์ค๋ ์ํฉ์ด๋ผ๋์ง)๋ง ์กฐ์ฌํ์.
* ๊ฐ์ฒด ์์ฑ, ๋ฉ์๋ ์ฝ ์คํ ๋ฑ ๊ทธ๋ฆผ์ ์์ฃผ ๊ทธ๋ ค๋ณด์.