instanceof ์ฐ์ฐ์
- ์ฐธ์กฐ๋ณ์์ ํ๋ณํ ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ์ ์ฌ์ฉ
- ๊ฐ๋ฅํ๋ฉด true ๋ฐํ
- ํ๋ฒํ ์ ์ ๋ฐ๋์ instanceof๋ก ํ์ธํด์ผ ํจ
doWork(new Car()); doWork(new FireEngine()); doWork(new Ambulance()); 3 ๋ฌธ์ฅ์ด ๋ชจ๋ ๊ฐ๋ฅํ๋ค.
doWork(new FireEngine());์ Car c = new FireEngine(); doWork(c);์ ๋์ผํ๋ค.
ํ๋ณํ์ ํ๋ ์ด์ ๋ ์ธ์คํด์ค์ ์๋ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ์ฉํ๊ธฐ ์ํด์์ด๋ค.
Carํ์ ์ ๋ฆฌ๋ชจ์ปจ์ธ c๋ก๋ water()๋ฅผ ํธ์ถํ ์ ์๊ธฐ ๋๋ฌธ์,
๋ฆฌ๋ชจ์ปจ์ FireEngineํ์ ์ผ๋ก ๋ฐ๊ฟ์ water()๋ฅผ ํธ์ถํ ๊ฒ์ด๋ค.
FireEngine fe๋ ์๊ธฐ ์์ ๊ณผ ์์ ์ ๋ชจ๋ ์กฐ์์ผ๋ก๋ ํ๋ณํ์ด ๊ฐ๋ฅํ๋ค.
์กฐ์ ํด๋์ค์ธ Car๊ณผ ๋ชจ๋ ํด๋์ค์ ์กฐ์์ธ Object๋ชจ๋ true๊ฐ ์ถ๋ ฅ์ด ๋๋ค.
Q. ์ฐธ์กฐ๋ณ์์ ํ๋ณํ์ ์ ํ๋์?
A. ์ฐธ์กฐ๋ณ์(๋ฆฌ๋ชจ์ฝ)์ ๋ณ๊ฒฝํจ์ผ๋ก์จ ์ฌ์ฉํ ์ ์๋ ๋ฉค๋ฒ์ ๊ฐฏ์๋ฅผ ์กฐ์ ํ๊ธฐ ์ํด์
Q. instanceof์ฐ์ฐ์๋ ์ธ์ ์ฌ์ฉํ๋์?
A. ์ฐธ์กฐ๋ณ์๋ฅผ ํ๋ณํํ๊ธฐ ์ ์ ํ๋ณํ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ํ์ธํ ๋
๋งค๊ฐ๋ณ์ ๋คํ์ฑ
- ์ฐธ์กฐํ ๋งค๊ฐ๋ณ์๋ ๋ฉ์๋ ํธ์ถ ์, ์์ ๊ณผ ๊ฐ์ ํ์ ๋๋ ์์ ํ์ ์ ์ธ์คํด์ค๋ฅผ ๋๊ฒจ์ค ์ ์๋ค.
์ฌ๊ธฐ์ Buyerํด๋์ค์ ๋ฌผ๊ฑด์ ๊ตฌ๋งคํ๋ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๊ทธ๋ผ ์ด๋ ๊ฒ ๊ฐ ํด๋์ค๋ณ๋ก ์ค๋ฒ๋ก๋ฉ์ ํด์ผ ํ๋ค.
๊ทธ๋ผ ๋ฌผํ์ด ๋์ด๋๋ฉด ์ค๋ฒ๋ก๋ฉํ๋ ๋ฉ์๋๊ฐ ๊ณ์ ์ถ๊ฐํด์ผ ํ๋ฉฐ, ๊ด๋ฆฌํ๊ธฐ๊ฐ ํ๋ค์ด์ง๋ค.
ํ์ง๋ง ๋ชจ๋ ๋ฌผํ์ ์กฐ์์ธ Productํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ๋ฉ์๋ ํ๋๋ก ์ฌ๋ฌ ๋ฌผ๊ฑด์ ๊ตฌ๋งค๊ฐ ๊ฐ๋ฅํด์ง๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ๋คํ์ฑ ๋งค๊ฐ๋ณ์์ ์ฅ์ ์ด๋ค.
์ฌ๋ฌ ์ข ๋ฅ์ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด๋ก ๋ค๋ฃจ๊ธฐ
- ์กฐ์ ํ์ ์ ๋ฐฐ์ด์ ์์๋ค์ ๊ฐ์ฒด๋ฅผ ๋ด์ ์ ์๋ค.
์ผ์ชฝ ์ฝ๋๋ฅผ ๋ฐฐ์ด์ ํํ๋ก ๋ฐ๊พผ๋ค๋ฉด ์ค๋ฅธ์ชฝ ์ฝ๋์ ๊ฐ๋ค.
๋ฌผ๊ฑด์ฌ๋ ์ฌ๋(Buyer)์ ์ฅ๋ฐ๊ตฌ๋(cart)์ Product[10] ๋ฐฐ์ด์ด ๋ค์ด๊ฐ์๋ค.
์ฆ Product ๋ฐฐ์ด ์์๋ Product์ ์์ ํด๋์ค๋ค์ด ๊ฐ์ฒด๋ก ๋ฐฐ์ด์ด ๋ด์ ์ ์๋ค.
๋ง์ฝ buy๋ฉ์๋๋ฅผ ํตํด cart[i++] = p;๋ฅผ ํ๊ฒ ๋๋ฉด, p์ ์๋ ๊ฐ์ฒด๊ฐ cart์ 0๋ฒ ์ธ๋ฑ์ค์ ๋ค์ด๊ฐ๋ค.
์๋ cart์ ๋ฐฐ์ด์๋ null๊ฐ์ด ์ ๋ถ ๋ค์ด์์ง๋ง, ๊ฐ์ฒด๋ฅผ ๋ฃ๊ฒ ๋จ์ผ๋ก์จ ๊ฐ์ฒด์ ์ฃผ์๊ฐ ์ธ๋ฑ์ค์ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
์ถ์ฒ:์๋ฐ์ ์ ์[๊ธฐ์ด]
'๐จ๏ธ Backend > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java]๊ฐ์ฒด์งํฅ (6) - ์ธํฐํ์ด์ค(interface) (0) | 2022.11.01 |
---|---|
[Java]๊ฐ์ฒด์งํฅ (5) - ์ถ์ ํด๋์ค, ์ถ์ ๋ฉ์๋ (0) | 2022.10.30 |
[Java]๊ฐ์ฒด์งํฅ (3) - ์ ์ด์,์บก์ํ,๋คํ์ฑ,์ฐธ์กฐ๋ณ์์ ํ๋ณํ (0) | 2022.10.26 |
[Spring]๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ์คํ๋ง (0) | 2022.10.22 |
[Spring]ํ๋ก์ ํธ ํ๊ฒฝ์ค์ (1) | 2022.10.17 |