์ ์ค๋์ ์ ๋ฒ์ ๊ณต๋ถํ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ์ฌ ์ ์๋ฏธํ ์ฝ๋๋ฅผ ํ๋ฒ ์ง๋ณผ ๊ฒ์ด๋ค.
์ด๋ค ์ฝ๋์ธ์ง ํ ๋ฒ ์ดํด๋ณด์.
์ฐ์ ๋จผ์ ์ค๋ช ์ ํด๋ณด์๋ฉด Payment๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ํ๋ ๋ง๋ค๊ณ ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋
ํด๋์ค ๋ ๊ฐ๋ฅผ ๋ง๋ ๋ค. CardPayment์ CashPayment ๋ก ๊ฐ๊ฐ ์นด๋๊ณ์ฐ๊ณผ ํ๊ธ๊ณ์ฐ์ ์๋ฏธํ๋
ํด๋์ค์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ ๋ฉ์ธ๋ฉ์๋์ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ง๋ถ์ ํ ๊ฒ์ธ์ง ์ ๋ฌํ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค๊ณ
๊ทธ ๋ฐฉ์์ ๋ฐ๋ผ 000์ ์นด๋ ๊ฒฐ์ ๋์์ต๋๋ค์ ๊ฐ์ด ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด๋ณผ ๊ฒ์ด๋ค.
๊ทธ๋ผ ๋จผ์ ์ธํฐํ์ด์ค ์ ์ธ์ ๋จผ์ ๋ณด์.
Payment ๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์๋ค.
public abstract void pay(double amount); ๋ฅผ ๋ณด๋ฉด ์ ์ ์๋ฏ์ด ์ถ์๋ฉ์๋๋ค.
์ถ์๋ฉ์๋์ด๊ธฐ ๋๋ฌธ์ ๊ตฌํํ๋ ํด๋์ค๋ ์ด ๋ฉ์๋๋ฅผ ๋ฌด์กฐ๊ฑด ์ฌ์ ์ ํด์ผํ๋ค.
parameter๋ก๋ double ํ์ผ๋ก amount ๋ผ๋ ๋ณ์๋ฅผ ๋ฐ๊ณ ์๋ค.
๊ทธ๋ผ ์ด์ ์ด๋ฅผ ๊ตฌํํ๋ ๋ ๊ฐ์ ํด๋์ค๋ฅผ ๋ณด์.
๋ ๊ฐ์ ํด๋์ค๋ฅผ ๋ณด๋ฉด ๋๋ค Paytment ๋ฅผ ๊ตฌํํ๊ณ ์์ผ๋ฉฐ ๊ฐ๊ฐ์ ๋ง๊ฒ ์๋ก ๋ฉ์๋๋ฅผ ์ฌ์ ์ ํด์ฃผ๊ณ ์๋ค.
๋ฐ๋ผ์ ๊ฐ ํด๋์ค๋ ๊ฐ๊ฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด์ง๋ง ์ด๋ฆ์ pay๋ก ๊ฐ์ ๊ฒ์ด๋ค
(์ฆ, ์ํ๊ณ์ฐ์ด๋ ๋ญ๋ ์๋ก์ด ๊ฒฐ์ ์๋จ ํด๋์ค๋ฅผ ๋ง๋ค๊ธฐ์ ์ฉ์ดํ๋ค๋ ์๋ฏธ์ด๋ค.)
์ฌ์ค ์ฌ๊ธฐ๋ถ๋ถ์ด ์ ๋ฒ ์์ ์ ์ข ๋ค๋ฅธ ์ ์ธ๋ฐ ์ ์ดํด๋ณด๋๋ก ํ์.
ํ๋ํ๋ ์ค๋ช ์ ์์ธํ๊ฒ ํด๋ณด์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
static void getPay(Payment payment) {
payment.pay(100);
}
๋ถ๋ถ์ static์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒดํ ์์ด ์ฌ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค. ์ ๊ฐ์ฒดํ๋ฅผ ์ํ๊ณ ์ฌ์ฉํ๋?
getPay ๋ฉ์๋๋ Payment ์ธํฐํ์ด์ค์ ๊ฐ์ ๊ฐ์ ธ์ค๋ ์ญํ ๋ง ํ๋ ์ง๊ฒ๋ค๋ฆฌ์ ์ญํ ์ด๋ค.
๋ฐ๋ผ์ ๊ตณ์ด ๊ฐ์ฒดํ๋ฅผ ํ์ฌ ์ฌ์ฉํ ํ์ ์์ด ๊ฐ๋ง ์กฐ๋ฌํด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ผ ๋งค๊ฐ๋ณ์ Payment payment๋ ๋ฌด์์ด๋?
์๋ ๋ฉ์ธ ๋ฉ์๋๋ฅผ ๋ณด๋ฉด payment๋ new CardPayment()์ด๊ฑฐ๋ new CashPayment()์ด๋ค.
์ด ๋ป์ ์ฆ ๊ฐ์ฒดํ๋ฅผ ํด์ค๋ค๋ ์๋ฏธ์ด๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก Payement payment = new CardPayment() ํน์
Payment payment = new CashPayment()๋ผ๋ ์๋ฏธ์ด๋ค. ์ธํฐํ์ด์ค๋ ๊ฒฐ๊ตญ์ ์์ํ์ ์ด๊ธฐ์
์ด ๊ณผ์ ์์ ์ ์บ์คํ ์ด ์ผ์ด๋๋ค.
์ ์บ์คํ ์ด ์ผ์ด๋ ์ํ์์ ์ด ๊ฐ์ pay๋ฉ์๋์ 100์ด๋ผ๋ ๊ฐ์ ๋ฃ์ด์คฌ๋ค.
ํ์ง๋ง ์ฐ๋ฆฌ๋ pay ๋ฉ์๋๊ฐ ์ฌ์ ์ ๋ ๋ฉ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์๋ค.
์ฌ์ ์ ๋ ๋ฉ์๋๋ ์ ์บ์คํ ์ด ๋์๋๋ผ๋ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค. ๋ฐ๋ก ์ฌ์ ์ ๋ ๊ฐ๊ฐ์ด ๊ฐ์ผ๋ก!!
๋ฐ๋ผ์ Payment ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ฌ์ ์ ๋ pay๋ฉ์๋๋ก ๊ฐ๊ฐ ๊ฐ์ด ์ ๋ฌ ๋ ์ ์๋ ๊ฒ์ด๋ค.
๊ฒฐ๋ก !!
1. getPay์ ๋งค๊ฐ๋ณ์์ new ~~์ด ๋ค์ด๊ฐ๋ฏ๋ก ๊ฐ์ฒดํ์.
2. getPay ๋งค๊ฐ๋ณ์ Payment payment๋ฅผ ๋ฐ์ ๊ฐ 100์ด ์ ์ฅ์ด ๋จ
3. ์ ์บ์คํ ์ด ์ผ์ด๋ ์ํฉ์ด ๋์ด๋ฒ๋ฆฌ๋ฉด์ CardPayment์ ์ฌ์ ์ ๋ ๋ฉ์๋๋ก ์ ๋ฌ๋จ
4. CardPayment.pay(100);์ด ๋์ด๋ฒ๋ฆฌ๋ ์ํฉ๊ณผ ๊ฐ์์ง
5. static๋ฉ์๋์ด๋ฏ๋ก Intertest.getPay();๋ก ๊ฐ์ฒดํ ์์ด ๋ฐ๋ก ์ฌ์ฉ
์ฝ๊ฐ ํท๊ฐ๋ฆด ์ ์์ง๋ง ์ดํดํ๋ฉด ์ฌ์ด ํ๋ก๊ทธ๋จ์ด๋ค.
์ ์บ์คํ ์ด ๋น์ฐํ๊ฒ ์์ฐ์ค๋ฝ๊ฒ ์ฌ์ฉ๋ ๊ฒ์ ๋น ๋ฅด๊ฒ ๋์น์ฑ ์ ์์ด์ผํ๋ ๊ฒ์ด
ํฌ์ธํธ๋ค.
์ค๋์ ์ฌ๊ธฐ๊น์ง
'์ธ์ด > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA : ์ธํฐํ์ด์ค1(Interface) (0) | 2024.09.08 |
---|---|
JAVA : ์ถ์ ํด๋์ค ์์2 (0) | 2024.08.29 |
JAVA : ์ถ์ ํด๋์ค ์์1 (0) | 2024.08.29 |
JAVA : ์ถ์ ํด๋์ค์ ์ถ์ ๋ฉ์๋ (0) | 2024.08.29 |
JAVA : ํ๋ณํ ๋ฐ ์บ์คํ ์ฐ์ต (2) | 2024.08.28 |