๋ธ๋ก๊ทธ ์ฎ๊ฒผ์ต๋๋ค! ๐ก integer.blog
์๋ฐ์ ์ ์(๋จ๊ถ์ฑ ์ ) ํ์ต๋ด์ฉ ์ ๋ฆฌ
1. ๋คํ์ฑ (Polymorphism)
- Java์์๋ ํ ํ์ ์ ์ฐธ์กฐ๋ณ์๋ก ์ฌ๋ฌ ํ์ ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ์ ์๋๋ก ํ๋ ๊ฒ.
- ๋ถ๋ชจํด๋์ค ํ์ ์ ์ฐธ์กฐ๋ณ์๋ก ์์ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ ์ ์๋๋ก ํ๋ ๊ฒ.
- ์ฐธ์กฐ๋ณ์์ ํ์ ์ด ์ฐธ์กฐ๋ณ์๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ์ธ์คํด์ค์์ ์ฌ์ฉํ ์ ์๋ ๋ฉค๋ฒ์ ๊ฐ์๋ฅผ ๊ฒฐ์ ํ๋ค.
- ๋ชจ๋ ์ฐธ์กฐ๋ณ์๋ null ๋๋ 4 byte์ ์ฃผ์๊ฐ์ด ์ ์ฅ๋๋ค.
2. ์ฐธ์กฐ๋ณ์์ ํ๋ณํ
- ๋ถ๋ชจํ์ ์ ์ฐธ์กฐ๋ณ์๋ฅผ ์์ํ์ ์ ์ฐธ์กฐ๋ณ์๋ก ๋ณํํ๋ ๊ฒ = down-casting (ํ๋ณํ ์๋ต ๋ถ๊ฐ)
- ํ๋ณํ์ ์ฐธ์กฐ๋ณ์์ ํ์ ์ ๋ณํํ๋ ๊ฒ์ด์ง ์ธ์คํด์ค๋ฅผ ๋ณํํ๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์, ์ฐธ์กฐ๋ณ์์ ํ๋ณํ์ ์ธ์คํด์ค์ ์๋ฌด ์ํฅ ์๋ค.
- ์ปดํ์ผ ์, ์ฐธ์กฐ๋ณ์ ๊ฐ์ ํ์ ๋ง ์ฒดํฌํ๊ธฐ ๋๋ฌธ์ ์คํ ์ ์์ฑ๋ ์ธ์คํด์ค์ ํ์ ์ ๋ํด์๋ ์์ง ๋ชปํ์ฌ ์ปดํ์ผ์ ์ฑ๊ณตํ๋๋ผ๋ ์คํ ์ ์๋ฌ(ClassCastException)๊ฐ ๋ฐ์ํ ์ ์๋ค.
3. instanceof ์ฐ์ฐ์
- ์ฐธ์กฐ๋ณ์๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ์ธ์คํด์ค์ ์ค์ ํ์
์ ์์๋ณด๊ธฐ ์ํด
instanceof
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.(์ฃผ๋ก ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉ) instanceof
๋ฅผ ์ด์ฉํ ์ฐ์ฐ ๊ฒฐ๊ณผ๋กtrue
๋ฅผ ์ป์๋ค๋ ๊ฒ์ ์ฐธ์กฐ๋ณ์๊ฐ ๊ฒ์ฌํ ํ์ ์ผ๋ก ํ๋ณํ์ด ๊ฐ๋ฅํ๋ค๋ ๋ป์ด๋ค.void doWork(Car c) { if (c instanceof FireEngine){ FireEngine fe = (FireEngine)c; fe.water(); ... }else if ... }
4. ์ฐธ์กฐ๋ณ์์ ์ธ์คํด์ค์ ์ฐ๊ฒฐ
- static ๋ฉ์๋๋ static ๋ณ์์ฒ๋ผ ์ฐธ์กฐ๋ณ์์ ํ์ ์ ์ํฅ์ ๋ฐ๋๋ค. ์ฐธ์กฐ๋ณ์์ ํ์ ์ ์ํฅ์ ๋ฐ์ง ์๋ ๊ฒ์ ์ธ์คํด์ค ๋ฉ์๋ ๋ฟ์ด๋ค.
- ๋ฐ๋ผ์ static ๋ฉ์๋๋ ๋ฐ๋์ ์ฐธ์กฐ๋ณ์๊ฐ ์๋
ํด๋์ค์ด๋ฆ.๋ฉ์๋()
๋ก ํธ์ถํด์ผ ํ๋ค.
5. ์ฌ๋ฌ ์ข ๋ฅ์ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด๋ก ๋ค๋ฃจ๊ธฐ
- ๋ถ๋ชจํ์ ์ ์ฐธ์กฐ๋ณ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ฉด, ๊ณตํต์ ์กฐ์์ ๊ฐ์ง ์๋ก ๋ค๋ฅธ ์ข ๋ฅ์ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด๋ก ๋ฌถ์ด์ ๋ค๋ฃฐ ์ ์๋ค.
Vector
ํด๋์ค๋ ๋ด๋ถ์ ์ผ๋กObject
ํ์ ์ ๋ฐฐ์ด์ ๊ฐ์ง๊ณ ์์ด์, ์ด ๋ฐฐ์ด์ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์๋ค.
public class Vector extends AbstractList implements List, Cloneable, java.io.Serializable { protected Object elementData[]; ... }
Vector
ํด๋์ค๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์์์ ๊ด๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ ์ฅํ ์ธ์คํด์ค์ ๊ฐ์์ ์ ๊ฒฝ ์ฐ์ง ์์๋ ๋๋ค.Vector
ํด๋์ค๋ ๋จ์ง ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด๋ฐฐ์ด์ผ ๋ฟ์ด๋ค.Vector item = new Vector();