์์
public class person{}
public class Student extends Person{}
์ฅ์ : ๊ฐ์ ์์ฑ์ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ ๋ถ๋ชจ ํด๋์ค๋ง ์์ ํ๊ณ ์ฌ๋ฌ ๊ฐ์ ํด๋์ค๋ฅผ ๋ชจ๋ ์์ ํ ํ์๊ฐ ์์ด ์ ์ง๋ณด์๊ฐ ์ฝ๋ค.
--> ์ฝ๋ ์ค๋ณต์ ์ ๊ฑฐํ์ฌ ํด๋์ค๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ๊ตฌํํ๋ค.
- ์์์ ํน์ง
ํด๋์ค ๊ฐ๊ฒฐํ - ๋ฉค๋ฒ ์ค๋ณต์์ฑ ๋ถํ์
ํด๋์ค ๊ด๋ฆฌ ์ฉ์ด - ํด๋์ค์ ๊ณ์ธต์ ๋ถ๋ฅ
์ํํธ์จ์ด์ ์์ฐ์ฑ ํฅ์ - ํด๋์ค ์ฌ์ฌ์ฉ, ํ์ฅ์ด ์ฌ์
์๋ฐ์์๋ ํด๋์ค ๋ค์ค ์์(multiple ingeritance)๋ฅผ ์ง์ํ์ง ์๋๋ค.
- ๋ค์ค์์์ ๋ถ๋ชจ ํด๋์ค๋ค์ด ๊ฐ์ ์ด๋ฆ์ ํจ์๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ ๋ชจํธ์ฑ์ผ๋ก ๋ฌธ์ ์ ๋ฐ ๊ฐ๋ฅ์ฑ์ด ์๋ค. ์๋ฐ๋ ์ด๋ฅผ ์์ฒ๋ด์.
- ์ด๋ ๋คํ์ฑ์ ์๋ฏธํ๋ค. ๋ถ๋ชจ-์์ ์์ ๊ด๊ณ์์๋ ํด๋์ค์์ ์์ ํด๋์ค๊ฐ ๋์ผํ ๋ฉ์์ง๋ก ํ์ ํด๋์ค๋ค์ ์๋ก ๋ค๋ฅด๊ฒ ๋์์ํค๋ ๊ฐ์ฒด ์งํฅ ์๋ฆฌ์ด๋ค.
์์์ ํ์์ ์ ํ์ด ์๋ค.
๊ณ์ธต ๊ตฌ์กฐ์ ์ต์์์ java.lang.Object ํด๋์ค๊ฐ ์์ด์ ์๋์ผ๋ก ์์๋ฐ๋๋ก ์ปดํ์ผ๋๋ค.
- Object ํด๋์ค๋ง์ด ์ ์ผํ๊ฒ ์ํผํด๋์ค๋ฅผ ๊ฐ์ง์ง ์๋๋ค.
์์์ ๋์ ๋ฐ์ธ๋ฉ์ด๋ค. ๋์ ๋ฐ์ธ๋ฉ์ Overriding์ ์๋ฏธํ๋ค.
์ํผํด๋์ค์์ ์ ์ธ๋ ๋ฉ์๋์ ๊ฐ์ ์ด๋ฆ, ๊ฐ์ ๋ฆฌํด ํ์ , ๊ฐ์ ๋งค๊ฐ๋ณ์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ๋ ๋ฉ์๋๋ฅผ ์๋ธ ํด๋์ค์์ ์ฌ์์ฑํ๋ ๊ฒ์ด๋ค.
์ํผํด๋์ค์ ์๋ ๋ฉ์๋๋ก ๊ธฐ๋ฅ์ ๊ตฌํํ์ง ๋ชปํ ๋ ๋์ผํ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์๋ธํด๋์ค์์ ๋ค์ ์์ฑ.
์คํ ์ญ์ ์๋ธํด๋์ค ๋ด์ ๋ฉ์๋๋ง ์คํ๋๋ค.
๋ถ๋ชจ์ ๋ฉค๋ฒ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด super.
๋ฉค๋ฒ๋ช
์ ์ฌ์ฉํ๋ฉด ๋จ
์ํผํด๋์ค ๋ฉ์๋๋ฅผ ๋ฌด์, ํน์ ๋ฎ์ด์ฐ๊ธฐ๋ผ๊ณ ํ๋ฉฐ
๋์ ๋ฐ์ธ๋ฉ
์ด๋ผ๊ณ ํ๋ค.
์ค๋ฒ๋ผ์ด๋ฉ์ ๋ชฉ์ : ๋คํ์ฑ ์คํ
์ค๋ฒ๋ผ์ด๋ฉ ์ ์ฝ ์กฐ๊ฑด : ์ํผํด๋์ค ๋ฉ์๋์ ๋์ผํ ์ํ์ผ๋ก ์์ฑ (๋์ผ ์ด๋ฆ, ๋์ผ ๋งค๊ฐ๋ณ์ ํ์ , ๋์ผ ๊ฐ์, ๋์ผํ ๋ฆฌํดํ์ ์ ๋ฉ์๋)
์ํผํด๋์ค ๋ฉ์๋์ ์ ๊ทผ ์ง์ ์๋ณด๋ค ์ ๊ทผ์ ๋ฒ์๋ฅผ ์ขํ ์ค๋ฒ๋ผ์ด๋ฉ ๋ถ๊ฐ (ํค์ฐ๋ ๊ฑด ๊ฐ๋ฅ)
static, private, final ๋ฉ์๋๋ ์๋ธํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ฉ ํ ์ ์๋ค.
Parent p;
Child c = new Child();
p = c; //์
์บ์คํ
Parent p = new Child(); //์
์บ์คํ
Child
์ ์์ฑ์๋ฅผ ํธ์ถํด Child
์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ Parent
ํด๋์ค์ ์ธ์คํด์ค๋ก ๋ณํํ๋ค.Child c = (Child)p; //downcasting, (student)์ ํ์
๋ณํ์ ๋ฐ๋์ ํ์ํด์ผ ๋จ
Person jee = new Student();
Person kii = new Professor();
if (jee instanceof Person) //true
if (jee instanceof Student) //true
if (kii instanceof Student) //false
// if(3 instanceof int) ๊ฐ์ฒด์ ๋ํ ๋ ํผ๋ฐ์ค๋ง ์ฌ์ฉํด์ ๋ฌธ๋ฒ ์ค๋ฅ.
if ("java" instanceof String) //true