์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ์ฝ”ํ‹€๋ฆฐ์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ, ์ž๋ฐ”๋ฅผ ๋งŽ์ด ๋‹ฎ์€ ์–ธ์–ด๋ผ๊ณ  ๋Š๊ผˆ์œผ๋ฉฐ ๋งค์šฐ ์˜ค๋žœ๋งŒ์— ์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ๊ณต๋ถ€ํ•˜๋Š” ํ„ฐ๋ผ ์ƒˆ๋กญ๊ณ  ์‹ ๊ธฐํ•˜๊ณ  ํฅ๋ฏธ๋กœ์›€์„ ๋งŽ์ด ๋Š๊ผˆ๋‹ค. ๊ทธ๋ž˜์„œ ํšŒ์‚ฌ ๋„์„œ๊ด€์—์„œ ์ฝ”ํ‹€๋ฆฐ in action ์ฑ…์„ ๋นŒ๋ ค์„œ ์ฝ์–ด๋ณผ ์˜ˆ์ •์ด๋ฉฐ, ์ฑ…์—์„œ ๋ฐฐ์šด ๋‚ด์šฉ๋„ ํฌ์ŠคํŒ…์„ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

 

์šฐ์„  ๊นŠ์ด์žˆ๊ฒŒ ๋ฌธ๋ฒ•๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ฝ”ํ‹€๋ฆฐ์ด ์–ด๋–ค ์–ธ์–ด์ธ์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ๋ถ€ํ„ฐ ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„์•ผ ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ์ฑ…์—์„œ ๊ด€๋ จ ๋ถ€๋ถ„์„ ์ฝ์–ด๋ณด์•˜๊ณ  ๊ทธ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.

 

์ฝ”ํ‹€๋ฆฐ์˜ ์ฃผ์š” ํŠน์„ฑ

1. ๋Œ€์ƒํ”Œ๋žซํผ: ์„œ๋ฒ„, ์•ˆ๋“œ๋กœ์ด๋“œ ๋“ฑ JVM์ด ์„ค์น˜๋  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ

- ์ด ๋ถ€๋ถ„์€ ์ž๋ฐ”๋ฅผ ๋Œ€์ฒดํ•  ์ƒˆ๋กœ์šด ์–ธ์–ด์ž„์„ ํ™•์‹คํžˆ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. ์ •์  ํƒ€์ž… ์–ธ์–ด

- ์ปดํŒŒ์ผ ์‹œ์— ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ๋ฐฐํฌ ํ›„ ๋Ÿฐํƒ€์ž„์— ๋ฐœ์ƒํ•  ์˜ค๋ฅ˜๋ฅผ ๋ฏธ๋ฆฌ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

3. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์›

- ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ๊ฐœ๋…์€ 3๊ฐ€์ง€๊ฐ€ ์žˆ์ฃ . ์ผ๊ธ‰์‹œ๋ฏผ(first-class), ๋ถˆ๋ณ€์„ฑ(immutability), ๊ทธ๋ฆฌ๊ณ  ๋ถ€์ˆ˜ํšจ๊ณผ(side-effect)๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ. ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๊ณ , ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์•ˆ์ „ํ•˜๋ฉฐ, ํ…Œ์ŠคํŠธ๊ฐ€ ์‰ฝ๋‹ค๊ณ  ์–˜๊ธฐํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์‚ฌ์šฉ์ด ์•ˆ์ „ํ•˜๋‹ค๋Š” ๊ฒƒ์€ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์™ธ๋ถ€ ๊ฐ์ฒด์˜ ์ƒํƒœ๋ณ€๊ฒฝ์„ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์–˜๊ธฐํ•ฉ๋‹ˆ๋‹ค.

 

4. ๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค

- ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์ฃ . ๊ทธ๋™์•ˆ ํ•œ๊ตญ์˜ ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ํฐ ๊ธฐ์—ฌ๋ฅผ ํ•œ Java๋Š” ์˜ค๋ผํด์˜ ์†์— ๋„˜์–ด๊ฐ„ ๋’ค๋กœ ์œ ๋ฃŒํ™”๊ฐ€ ์ง„ํ–‰๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๊ตญ ๊ธฐ์—…๋“ค์—์„œ๋Š” ์ž๋ฐ”๋ฅผ ๋Œ€์ฒดํ•  ์–ธ์–ด๋ฅผ ์ฐพ์œผ๋ ค๊ณ  ํ• ๊ฒ๋‹ˆ๋‹ค. 

 

5. ๊ธฐ์กด Java ์†Œ์Šค์ฝ”๋“œ์™€์˜ ์—ฐ๋™

- ์ด๊ฑด ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ์˜ ์ •๋ง ์ค‘์š”ํ•œ ํŠน์„ฑ์ด๋‹ค. ๊ธฐ์กด ์ž๋ฐ”์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ์ ํŠธ๋กœ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์€ ์ •๋ง ํ›Œ๋ฅญํ•œ ํŠน์„ฑ์ด๋‹ค. 

 

์ฝ”ํ‹€๋ฆฐ์˜ ์ฒ ํ•™

1. ์‹ค์šฉ์„ฑ : ์ด๊ฑด ๋ญ ๋งํ•  ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ, ๋‹จ์ง€ ์—ฐ๊ตฌ๋ฅผ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋œ ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ 

2. ๊ฐ„๊ฒฐ์„ฑ : ๋”์ด์ƒ ๊ฐœ๋ฐœ์ž๊ฐ€ getter, setter, toString ๋“ฑ์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š”์—†๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค. 

3. ์•ˆ์ „์„ฑ : ์ •์  ํƒ€์ž… ์–ธ์–ด์ด๋‹ˆ ์ปดํŒŒ์ผ ์‹œ์ ์— ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„๋‚ธ ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐ”์—์„œ ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” ClassCastException, NPE ๋“ฑ์„ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค๋Š” ์  ๋“ฑ์ด ์žˆ๋‹ค.

4. ์ƒํ˜ธ ์šด์šฉ์„ฑ : ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๊ณ  ์ž๋ฐ” ์ฝ”๋“œ์—์„œ ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์‹ฌ์ง€์–ด ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋“œ์—์„œ ์ž๋ฐ”๋กœ ์ •์˜ํ•œ ํด๋ž˜์Šค๋ฅผ ์ƒ์†/๊ตฌํ˜„๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋˜ํ•œ, ์ž๋ฐ”-์ฝ”ํ‹€๋ฆฐ ๋ณ€ํ™˜๊ธฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ธฐ์กด ์ž๋ฐ”์ฝ”๋“œ๋ฅผ ์ฝ”ํ‹€๋ฆฐ ์–ธ์–ด๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Š” ์ธํ…”๋ฆฌJ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ดํด๋ฆฝ์Šค๋‚˜ ์›น์—์„œ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

 

 

๋‹ค์Œ์€ ์ฝ”ํ‹€๋ฆฐ ๋ฌธ๋ฒ•์„ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๋†€์ดํ„ฐ์ด๋‹ค. ๊ฐ์ข… ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋“œ ์ƒ˜ํ”Œ ์˜ˆ์ œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฝ”ํ‹€๋ฆฐ์— ๋Œ€ํ•ด ๋” ๊ณต๋ถ€ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค๋ฉด ์ž์ฃผ ๋“ค๋Ÿฌ ๋†€๋‹ค๊ฐ€์ž.

 

์ฝ”ํ‹€๋ฆฐ ์˜จ๋ผ์ธ ๋†€์ดํ„ฐ : https://play.kotlinlang.org/

Try Kotlin

Try Kotlin right in the browser.

try.kotlinlang.org