๐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ํต์ฌ 4๋ ์์น๊ณผ ์ค๊ณ ์ฒ ํ
๋ชฉ์ฐจ
1. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ด๋?
๊ฐ์ฒด์งํฅ์ด๋ ํ๋ก๊ทธ๋จ์ ๋จ์ํ ๋ช ๋ น์ด์ ์งํฉ์ด ์๋๋ผ, ์๋ก ์ํธ์์ฉํ๋ '๊ฐ์ฒด'๋ค์ ๋ชจ์์ผ๋ก ํ์ ํ๋ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. ํ์ค ์ธ๊ณ์ ์ฌ๋ฌผ์ ์ํํธ์จ์ด ์์ผ๋ก ์ฎ๊ฒจ์จ๋ค๊ณ ์๊ฐํ๋ฉด ์ฝ์ต๋๋ค.
๐๏ธ ํด๋์ค (Class)
๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ค๊ณ๋์
๋๋ค.
(์: ๋ถ์ด๋นต ํ, ์๋์ฐจ ์ค๊ณ๋)
๐ ๊ฐ์ฒด (Object / Instance)
์ค๊ณ๋๋ฅผ ๋ฐํ์ผ๋ก ์ค์ฒดํ๋ ๊ฒฐ๊ณผ๋ฌผ์
๋๋ค.
(์: ๊ฐ ๊ตฌ์ด ๋ถ์ด๋นต, ์ค์ ๋ก ๋ฌ๋ฆฌ๋ ์๋์ฐจ)
2. OOP์ 4๋ ํต์ฌ ์์น
์บก์ํ (Encapsulation)
๋ฐ์ดํฐ์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ํ๋๋ก ๋ฌถ๋ ๊ฒ์ ๋๋ค. ๋ด๋ถ์ ์์ธํ ๊ตฌํ์ ์จ๊ธฐ๊ณ (์๋ํ) ํ์ํ ๊ธฐ๋ฅ๋ง ๋ฐ์ผ๋ก ๋ ธ์ถํ์ฌ ๋ณด์์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ ๋๋ค.
์์ (Inheritance)
์ด๋ฏธ ๋ง๋ค์ด์ง ํด๋์ค์ ํน์ฑ์ ๊ทธ๋๋ก ๋ฌผ๋ ค๋ฐ์ ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค. ๊ณตํต๋ ๊ธฐ๋ฅ์ ๋ค์ ๋ง๋ค ํ์๊ฐ ์์ด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๊ทน๋ํ๋ฉ๋๋ค.
๋คํ์ฑ (Polymorphism)
ํ๋์ ์ธํฐํ์ด์ค๋ ๋ฉ์๋๊ฐ ์ํฉ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋์ํ๋ ์ฑ์ง์ ๋๋ค. ๊ฐ์ ๋ช ๋ น์ ๋ด๋ ค๋ ๊ฐ ๊ฐ์ฒด๊ฐ ์๊ธฐ ๋ฐฉ์๋๋ก ๋ฐ์ํ ์ ์๊ฒ ํ์ฌ ์ ์ฐํ ์ค๊ณ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
โจ ๋ณด์: ์ถ์ํ (Abstraction)
๊ฐ์ฒด์ ๊ณตํต์ ์ธ ํน์ง์ ์ถ์ถํ์ฌ ํต์ฌ์ ์ธ ๋ถ๋ถ๋ง ๋ชจ๋ธ๋งํ๋ ๊ณผ์ ์ ๋๋ค. ๋ณต์กํ ํ์ค์ ์ฌ๋ฌผ์ ๋จ์ํํ์ฌ ์์คํ ์ ๋ณต์ก๋๋ฅผ ์ค์ฌ์ค๋๋ค.
3. ์์ vs ์ธํฐํ์ด์ค (๊ฒฐ์ ์ ์ฐจ์ด)
์์ (Inheritance): "is-a" ๊ด๊ณ
'๋ถ๋ชจ-์์' ๊ด๊ณ๋ฅผ ํ์ฑํฉ๋๋ค. ํด๋์ค ๊ฐ์ ์๊ณ์ง์๊ฐ ๋๋ ทํ๋ฉฐ "A๋ B์ ์ผ์ข
์ด๋ค"๋ผ๋ ๊ด๊ณ์ผ ๋ ์ฌ์ฉํฉ๋๋ค.
(์: ์๋์ฐจ๋ ํ๊ฒ์ด๋ค, ์ฌ์๋ ๋๋ฌผ์ด๋ค)
์ธํฐํ์ด์ค (Interface): "can-do" ๊ด๊ณ
ํด๋์ค์ ์๊ด์์ด ๊ณตํต์ผ๋ก ํ์ํ ๊ธฐ๋ฅ(ํ์)์ ๊ท๊ฒฉ์ ์ ์ํฉ๋๋ค. "~์ ํ ์ ์๋ค"๋ผ๋ ๊ด๊ณ์ ์ ํฉํ๋ฉฐ, ๋ค์ค ๊ตฌํ์ด ๊ฐ๋ฅํฉ๋๋ค.
(์: ์ฌ์๋ ์์ํ ์ ์๊ณ , ์๋์ฐจ๋ ์์(์๋ฅ์์ฉ)ํ ์ ์๋ค)
'โ Backend > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Java] ๊ฐ๋น์ง ์ปฌ๋ ํฐ (Garbage Collector, GC) (0) | 2026.04.02 |
|---|---|
| [์๋ฐ ์ค๊ธ] 11. Generic 1 (2) | 2024.11.06 |
| [์๋ฐ ์ค๊ธ] 10. ์์ธ ์ฒ๋ฆฌ 2 (1) | 2024.10.22 |
| [์๋ฐ ์ค๊ธ] 09. ์์ธ ์ฒ๋ฆฌ 1 (1) | 2024.10.21 |
| [์๋ฐ ์ค๊ธ] 08. ์ค์ฒฉ ํด๋์ค, ๋ด๋ถ ํด๋์ค 2 (3) | 2024.10.11 |