instanceof
๋ก ํ์ธ!
- ์์:
- ์ฐ์ฐ์ ํ์ธ(ํ๋ณํ ํด๋ ๋๋์ง instanceof์ฐ์ฐ์ ์ฌ์ฉ)
- ํ๋ณํ
void doWork(Car c) { // new car(), new FireEngine() Car๋๋ ๋ชจ๋ Car์ ์์ ๋ค์ด์ฌ ์ ์์
//1. ํ๋ณํ์ด ๊ฐ๋ฅํ์ง ํ์ธ, c๊ฐ ๊ฐ๋ฅด์น๋ ๊ฐ์ฒด๊ฐ fireEngine์ด๋? ๋ผ๊ณ ๋ฌผ์ด๋ณด๋ ๊ฒ
if(c instanceof FireEngine){ //
FireEngine fe = (FireEngine)c; // 2. ํ๋ณํ
fe.water();
}
}
ํ๋ณํ์ ํ๋ ์ด์ ๋ ์ธ์คํด์ค์ ์๋ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ์ฉํ๋ ค๊ณ !
Car์ฐจ์ ์ ๋ฆฌ๋ชจ์ฝ์ธ c๋ก๋ water()๋ฅผ ํธ์ถํ ์ ์์ผ๋๊น
๋ฆฌ๋ชจ์ฝ์ FireEngineํ์ ์ผ๋ก ๋ฐ๊ฟ์ water() ํธ์ถ
object <= Car <= FireEngine
System.out.println(fe instaceof Object); // true, fe๊ฐ ๊ฐ๋ฅดํค๋ ๊ฐ์ฒด๊ฐ object๋? (์กฐ์)
System.out.println(fe instaceof Car); // true, ์ฐธ์กฐ๋ณ์ fe๊ฐ ๊ฐ๋ฅดํค๋๊ฒ Car๋? (์กฐ์)
System.out.println(fe instaceof FireEngine); // true
Object obj = (Object)fe; // ok , ์ต๊ณ ์กฐ์์ด๋ผ instaceof ์ฌ์ฉ ์ํด๋ ๋จ!
Car c = (Car)fe; // ok
์กฐ์์ด๋ผ true๊ฐ ๋์ด! ์ฐธ์ด๋ฉด ํ๋ณํ ๊ฐ๋ฅ~
์ฒจ์กฐ๋ณ์(๋ฆฌ๋ชจ์ฝ)์ ๋ณ๊ฒฝํจ์ผ๋ก์ ์ฌ์ฉํ ์ ์๋ ๋ฉค๋ฒ์ ๊ฐฏ์๋ฅผ ์กฐ์ ํ๊ธฐ ์ํด์
FireEngien f = new FireEngine(); Car c = (Car)f; // ok. ์กฐ์์ธ Carํ์ ์ผ๋ก ํ๋ณํ(์๋ต๊ฐ๋ฅ), ํ์ ์ผ์น ์ํค๋ ค๊ณ ํ๋ณํํ๋๊ฑฐ์, ๊ฐ์ฒด ๊ทธ๋๋ก, ์ฐธ์กฐ ๋ณ์๊ฐ ๊ทธ๋๋ก ํ์ ๋ง ๋ฐ๋
์ฐธ์กฐ๋ณ์๋ฅผ ํ๋ณํํ๊ธฐ ์ ์ ํ๋ณํ ๊ฐ๋ฅ์ฌ๋ถ๋ฅผ ํ์ธํ ๋ ์ฌ์ฉ
์๋ฐ์ ์ ์์ ์ฐธ๊ณ ํด์ ํ๊ธฐํ์ต๋๋ค! ๐