๐จ [JAVA] ํ๋ณํ ๐จ
์ฐธ์กฐ ๋ฐ์ดํฐ ํ๋ณํ
์ฐธ์กฐ ๋ฐ์ดํฐํ
- ๋ฐฐ์ด, ํด๋์ค ๋ฑ์ ๋งํ๋ ๊ฒ์ผ๋ก ๋ค๋ฅธ ์ฐธ์กฐ ๋ฐ์ดํฐ ํ ๋น์ด๋ ๋ค๋ฅธ ํด๋์ค๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ ํ ๋ ์ฐธ์กฐ ๋ฐ์ดํฐ ํ ๋ณํ์ด ์ผ์ด๋๋ค.
- ๋ฌต์์ ์ธ ํ๋ณํ(์ ์บ์คํ /์๋ํ๋ณํ)
- ๋ช ์์ ์ธ ํ๋ณํ(๋ค์ด์บ์คํ /๊ฐ์ ํ๋ณํ)
(1) ์ฐธ์กฐ ๋ฐ์ดํฐ ํ๋ณํ ์กฐ๊ฑด
- ์์ ๊ด๊ณ์ ์๋ ํด๋์ค ๊ฐ์๋ง ํ๋ณํ์ด ๊ฐ๋ฅํ๋ค
- ์๋ก ๋ค๋ฅธ ์ข ๋ฅ์ ํด๋์ค ๊ฐ์๋ ํ๋ณํ์ด ์ผ์ด๋์ง ์๋๋ค.
- ์์ ํด๋์ค ์ฐธ์กฐ ๋ฐ์ดํฐ ๋ณ์๋ ํ์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ์ ์์ง๋ง ํ์ ํด๋์ค ์ฐธ์กฐ ๋ฐ์ดํฐ ๋ณ์๋ ์์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ์ ์๋ค.
๊ฐ. ์ ์บ์คํ
- ํน์ ๊ฐ์ฒด๊ฐ ํ์ ํด๋์ค์ ํ์์ ์์ ํด๋์ค์ ํ์ผ๋ก ํ๋ณํ ๋๋ ๊ฒ
- ํ๋ง ์ ํํ๋ค๋ฉด ๋ฌต์์ ์ผ๋ก ํ๋ณํ๋๋ค.(์ ์บ์คํ )
-> ์ฆ ์ํผํด๋์ค๋ฅผ ์๋ธํด๋์ค๋ก ํ๋ณํ ์ํฌ ์์๋ ๋ฌต์์ ์ผ๋ก ํ๋ณํ(์ ์บ์คํ )๋๋ค๋ ๊ฒ
ํ์
- ์ํผ ํด๋์ค ๊ฐ์ฒด = new ์๋ธํด๋์ค();
class Person{}
class Student extends Person{}
...
Person p = new Sudent(); //์ํผ ํด๋์ค ๊ฐ์ฒด = new ์๋ธํด๋์ค
Student s = new Person(); //์ค๋ฅ ๋ฐ์ -> ์๋ธํด๋์ค๋ ์ํผํด๋์ค๋ฅผ ์ฐธ์กฐํ ์ ์๋ค.
๋. ๋ค์ด์บ์คํ
- ์ ์บ์คํ ํ ๊ฒ์ ๋ค์ ์๋์ ํ์ผ๋ก ๋ณต๊ตฌ์์ผ ์ฃผ๋ ๊ฒ
- ์ ์บ์คํ ๋ ๊ฒ๋ง ๋ค์ด์บ์คํ ์ํฌ ์ ์๋ค.
- ๋ค์ด ์บ์คํ ์ ๊ฐ์ ์บ์คํ (๋ช ์์ )์ ์์น์ผ๋ก ํ๋ค.
ํ์
- ์๋ธํด๋์ค ๊ฐ์ฒด = (์๋ธํด๋์ค)์ํผํด๋์ค๊ฐ์ฒด;
class Student extends Person{};
...
Person p = new Student(); //์
์บ์คํ
ํ ํ
Student s = (Student)p; //๋ค์ด ์บ์คํ
๊ฐ๋ฅ
ํด๋์ค๊ฐ์ ์์ ๊ด๊ณ์ ๊ฐ์ฒด ์์ฑ
Bus , Truck, Tax ๋ฅผ ๋ชจ๋ Car์ ์์ ๋ฐ์ ์
Car mycar = new Car();
Bus mybus = new Bus();
Truck mytruck = new Truck();
Tax mytax = new Tax();
mycar = mybus //์ปดํ์ผ ๊ฐ๋ฅ (์
์บ์คํ
)
mybus = mycar //์ปดํ์ผ ์ค๋ฅ (์์ ๊ด๊ณ X)
mybus = mytruck //์ปดํ์ผ ์ค๋ฅ (์๋ธํด๋์ค๊ฐ ์ฐธ์กฐ ๋ฐ์ผ๋ฏ๋ก)
mybus = (Bus)mycar //์ปดํ์ผ ๊ฐ๋ฅ, ์คํ์ค๋ฅ -> ์
์บ์คํ
X
//mybus = (Bus)mycar๊ฐ ์คํ ๋ ๋ผ๋ฉด ์
์บ์คํ
์ ํด์ค์ผ ํ๋ค.
Car mycar = new Bus(); //์
์บ์คํ
Bus mybus = (Bus)mycar; //๋ค์ด ์บ์คํ
๋ค. ๊ฐ์ ๋ฉ์๋
์์ ํด๋์ค ์ด๋ฆ์ผ๋ก ํ์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ํธ์ถ ํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฒ
- ์ ์บ์คํ ํ์ ๋ ์์ ํด๋์ค์ ์ด๋ฆ์ผ๋ก ํ์ํด๋์ค์ ๋ฉ์๋๋ฅผ ํธ์ถ
- ์๋ ์์ ๊ด๊ณ์ ์์ ๋ ์์ ํด๋์ค์ ๊ฐ์ฒด ๋ณ์๋ ํ์ ํด๋์ค์ ๋ฉ์๋์ ์ ๊ทผํ ์ ์์ผ๋ ์ ์บ์คํ ์ ํ์ ๊ฒฝ์ฐ ํ์ ํด๋์ค ๋ฉ์๋๋ฅผ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋งํ๋ค.
์ฐธ๊ณ ์ฌํญ
instance of ์ฐ์ฐ์
- ๊ฐ์ฒด์ ํ์ ์ ๋น๊ตํ๋ ์ฐ์ฐ์๋ก ์ฐ๋ณ์ ๊ฐ์ฒด์ ์ข๋ณ์ ๊ฐ์ฒด ํ์ ๋น๊ตํ์ฌ ์๋ก ๊ฐ์ผ๋ฉด true๋ฐํ, ๊ทธ๋ ์ง ์์ผ๋ฉด false ๋ฐํ
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐จ [JAVA] ํ๋ณํ ๐จ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@youjin0411/JAVA-ํ๋ณํ์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค