Blog

[Java]37 ๐ŸŽฏย ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP) - ๊ธฐ๋ณธ ๊ฐœ๋… ๋…ธํŠธ ๋ฐ ๋ณต์Šต ํšŒ๊ณ 

Category
Author
Tags
PinOnMain
1 more property
์ด๋ฒˆ ์ฃผ๋ง ํ† , ์ผ์„ ํ†ตํ•ด์„œ ์Šค์Šค๋กœ ์ต์ˆ™ํ•ด์ง€๋Š” ์ฒซ ๊ฑธ์Œ ๋ชฉํ‘œ๋ฅผ ์„ฑ๊ณตํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  โ€˜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์ด ๋‚˜์˜ค๋Š” ์ƒํ™ฉ์ด๋ผ๋˜์ง€)๋งŒ ์กฐ์‹ฌํ•˜์ž. * ๊ฐ์ฒด ์ƒ์„ฑ, ๋ฉ”์†Œ๋“œ ์ฝœ ์Šคํƒ ๋“ฑ ๊ทธ๋ฆผ์„ ์ž์ฃผ ๊ทธ๋ ค๋ณด์ž.