[JAVA] CLASS & OBJECT

์„ฑ์žฅ์ผ๊ธฐยท2024๋…„ 7์›” 22์ผ
0

[SWCAMP] JAVA

๋ชฉ๋ก ๋ณด๊ธฐ
7/16

ํด๋ž˜์Šค์™€ ๊ฐ์ฒด

ํด๋ž˜์Šค๋ž€?

๐Ÿ’ก ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •์˜์˜ ํƒ€์ž…์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์„ ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ค. ์ฆ‰, ํด๋ž˜์Šค๋Š” ์‚ฌ์šฉ์ž ์ •์˜์˜ ์ž๋ฃŒํ˜•์ด๋‹ค.

์บก์Аํ™”

๐Ÿ’ก ์บก์Аํ™”๋Š” ์œ ์ง€๋ณด์ˆ˜์„ฑ ์ฆ๊ฐ€(๋‚ฎ์€ ๊ฒฐํ•ฉ๋„)๋ฅผ ์œ„ํ•ด ํ•„๋“œ์˜ ์ง์ ‘ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๊ณ , public ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ„์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.
ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•  ์‹œ ํŠน๋ณ„ํ•œ ๋ชฉ์ ์ด ์•„๋‹Œ ์ด์ƒ ์บก์Аํ™”๊ฐ€ ๊ธฐ๋ณธ์ ์ธ ์›์น™์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.

ํ•„๋“œ์— ์ง์ ‘ ์ ‘๊ทผ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ 

A. ํ•„๋“œ์— ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š๋Š” ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋„ ํ†ต์ œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
B. ํ•„๋“œ์˜ ์ด๋ฆ„์ด๋‚˜ ์ž๋ฃŒํ˜•์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ชฝ์—๋„ ์ˆ˜์ • ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

์บก์Аํ™”๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ฌธ์ œ์  ํ•ด๊ฒฐ

A. ํ•„๋“œ์— ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก private ์ ‘๊ทผ ์ œ์–ด์ž ์‚ฌ์šฉ

๊ตฌ๋ถ„๊ฐ™์€ ํด๋ž˜์Šค๊ฐ™์€ ํŒจํ‚ค์ง€์ž์‹ ํด๋ž˜์Šค์ „์ฒด
publicOOOO
protectedOOO
(default)OO
privateO

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๊ฐ€์ง€ ํ˜•ํƒœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

static๊ณผ final ํ‚ค์›Œ๋“œ

static

๐Ÿ’ก ์ •์  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ํ”„๋กœ๊ทธ๋žจ์ด start๋  ์‹œ ํ• ๋‹น ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค.
static ํ•„๋“œ๋‚˜ ๋ฉ”์†Œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์—†์ด ํด๋ž˜์Šค๋ช….์„ ํ†ตํ•ด ์ ‘๊ทผํ•ด์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ๋‹ค.
์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•  ๋ชฉ์ ์ธ ์†์„ฑ์ด๋‚˜ ํ•„๋“œ์˜ ์˜ˆ์•ฝ์–ด ์ž๋ฆฌ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

final

๐Ÿ’ก ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€์˜ ์˜๋ฏธ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค.
(์ƒ์†๊ณผ ๊ด€๋ จํ•˜์—ฌ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์†Œ๋“œ์˜ ์˜ˆ์•ฝ์–ด ์ž๋ฆฌ์— ์“ฐ์ด๋ฉด ๋”์ด์ƒ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ๊ฐ€์ง€์ง€ ๋ชปํ•˜๋Š” ๋งˆ์ง€๋ง‰ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์˜๋ฏธํ•˜๊ฒŒ ๋œ๋‹ค.)

  • ํด๋ž˜์Šค ํ•„๋“œ์˜ final ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™” ํ•˜๊ฑฐ๋‚˜ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.

๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜

๐Ÿ’ก ํด๋ž˜์Šค์—์„œ ์“ฐ์ด๋Š” ๋ณ€์ˆ˜๋Š” ํฌ๊ฒŒ ํด๋ž˜์Šค ๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(ํด๋ž˜์Šค์˜ ํ•„๋“œ), ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.
ํด๋ž˜์Šค ๋ณ€์ˆ˜๋Š” 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๋กœ ๋‹ฌ๋ ค๊ฐ‘๋‹ˆ๋‹ค.
profile
์—”์ง€๋‹ˆ์–ด๋กœ์˜ ์„ฑ์žฅ์ผ์ง€

0๊ฐœ์˜ ๋Œ“๊ธ€