โ˜• Backend/Java

[Java] ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)

devCloud 2026. 4. 2. 11:51
728x90

๐Ÿ’Ž ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP) ํ•ต์‹ฌ 4๋Œ€ ์›์น™๊ณผ ์„ค๊ณ„ ์ฒ ํ•™

1. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)์ด๋ž€?

๊ฐ์ฒด์ง€ํ–ฅ์ด๋ž€ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹จ์ˆœํ•œ ๋ช…๋ น์–ด์˜ ์ง‘ํ•ฉ์ด ์•„๋‹ˆ๋ผ, ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” '๊ฐ์ฒด'๋“ค์˜ ๋ชจ์ž„์œผ๋กœ ํŒŒ์•…ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ์„ ์†Œํ”„ํŠธ์›จ์–ด ์•ˆ์œผ๋กœ ์˜ฎ๊ฒจ์˜จ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค.

๐Ÿ—๏ธ ํด๋ž˜์Šค (Class)

๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์„ค๊ณ„๋„์ž…๋‹ˆ๋‹ค.
(์˜ˆ: ๋ถ•์–ด๋นต ํ‹€, ์ž๋™์ฐจ ์„ค๊ณ„๋„)

๐Ÿš— ๊ฐ์ฒด (Object / Instance)

์„ค๊ณ„๋„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹ค์ฒดํ™”๋œ ๊ฒฐ๊ณผ๋ฌผ์ž…๋‹ˆ๋‹ค.
(์˜ˆ: ๊ฐ“ ๊ตฌ์šด ๋ถ•์–ด๋นต, ์‹ค์ œ๋กœ ๋‹ฌ๋ฆฌ๋Š” ์ž๋™์ฐจ)


2. OOP์˜ 4๋Œ€ ํ•ต์‹ฌ ์›์น™

์บก์Аํ™” (Encapsulation)

๋ฐ์ดํ„ฐ์™€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๋ถ€์˜ ์ƒ์„ธํ•œ ๊ตฌํ˜„์€ ์ˆจ๊ธฐ๊ณ (์€๋‹‰ํ™”) ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๋ฐ–์œผ๋กœ ๋…ธ์ถœํ•˜์—ฌ ๋ณด์•ˆ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

์ƒ์† (Inheritance)

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

๋‹คํ˜•์„ฑ (Polymorphism)

ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์„ฑ์งˆ์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ช…๋ น์„ ๋‚ด๋ ค๋„ ๊ฐ ๊ฐ์ฒด๊ฐ€ ์ž๊ธฐ ๋ฐฉ์‹๋Œ€๋กœ ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ์œ ์—ฐํ•œ ์„ค๊ณ„๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

โœจ ๋ณด์™„: ์ถ”์ƒํ™” (Abstraction)

๊ฐ์ฒด์˜ ๊ณตํ†ต์ ์ธ ํŠน์ง•์„ ์ถ”์ถœํ•˜์—ฌ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„๋งŒ ๋ชจ๋ธ๋งํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ํ˜„์‹ค์˜ ์‚ฌ๋ฌผ์„ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ๋ณต์žก๋„๋ฅผ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.


3. ์ƒ์† vs ์ธํ„ฐํŽ˜์ด์Šค (๊ฒฐ์ •์  ์ฐจ์ด)

์ƒ์† (Inheritance): "is-a" ๊ด€๊ณ„

'๋ถ€๋ชจ-์ž์‹' ๊ด€๊ณ„๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค ๊ฐ„์˜ ์œ„๊ณ„์งˆ์„œ๊ฐ€ ๋šœ๋ ทํ•˜๋ฉฐ "A๋Š” B์˜ ์ผ์ข…์ด๋‹ค"๋ผ๋Š” ๊ด€๊ณ„์ผ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
(์˜ˆ: ์ž๋™์ฐจ๋Š” ํƒˆ๊ฒƒ์ด๋‹ค, ์‚ฌ์ž๋Š” ๋™๋ฌผ์ด๋‹ค)

์ธํ„ฐํŽ˜์ด์Šค (Interface): "can-do" ๊ด€๊ณ„

ํด๋ž˜์Šค์— ์ƒ๊ด€์—†์ด ๊ณตํ†ต์œผ๋กœ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ(ํ–‰์œ„)์˜ ๊ทœ๊ฒฉ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. "~์„ ํ•  ์ˆ˜ ์žˆ๋‹ค"๋ผ๋Š” ๊ด€๊ณ„์— ์ ํ•ฉํ•˜๋ฉฐ, ๋‹ค์ค‘ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
(์˜ˆ: ์‚ฌ์ž๋„ ์ˆ˜์˜ํ•  ์ˆ˜ ์žˆ๊ณ , ์ž๋™์ฐจ๋„ ์ˆ˜์˜(์ˆ˜๋ฅ™์–‘์šฉ)ํ•  ์ˆ˜ ์žˆ๋‹ค)

728x90