๋ฐ์ํ
1. ๐ฆ(๋ถ๋ชจ1) realization > Wolf์ธํฐํ์ด์ค
package realization;
//์ธํฐํ์ด์ค๋ **์์ํ๋** ๋๋ **์ถ์๋ฉ์๋**๋ง ์ ์ธ ๊ฐ๋ฅ
public interface Wolf {
//์ถ์(๋ถ๋ชจ)๋ฉ์๋ : [public abstract] ์ ํ์ ์๋ต ๊ฐ๋ฅ
void cryLoudly();
void fastWalk();
}
2. ๐ฆ(๋ถ๋ชจ2) realization > Humanํด๋์ค
package realization;
public class Human {
//๋ถ๋ชจ๋ฉ์๋
public void speak() {System.out.println("[์ธ๊ฐ] ๋ํํ ์ ์๋ ๋ฅ๋ ฅ"); }
public void walk() {System.out.println("[์ธ๊ฐ] ๋ ๋ฐ๋ก ๊ฑธ์ ์ ์๋ ๋ฅ๋ ฅ"); }
public void smile() {System.out.println("[์ธ๊ฐ] ํ์ง ์์ ์ ์๋ ๋ฅ๋ ฅ"); }
}
3. ๐ฆ(์์) realization > WolfHumanํด๋์ค
package realization;
//ํด๋์ค ์ ์ธ ์ "ํด๋์ค"๋ฅผ ์์๋ฐ๊ธฐ ์ํด "extends" ํค์๋ ์ฌ์ฉ - ๋จ์ผ์์
//ํด๋์ค ์ ์ธ ์ "์ธํฐํ์ด์ค"๋ฅผ ์์๋ฐ๊ธฐ ์ํด "implements" ํค์๋ ์ฌ์ฉ - ๋ค์ค์์
// => ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ ํด๋์ค๋ ์ธํฐํ์ด์ค์ ์ ์ธ๋ ๋ชจ๋ ์ถ์๋ฉ์๋๋ฅผ ๋ฐ๋์ ์ค๋ฒ๋ผ์ด๋ ์ ์ธํด์ผํจ
// => [์ค์ฒดํํ๊ธฐ]
public class WolfHuman extends Human implements Wolf{
//์ค์ฒดํํ๊ธฐ
@Override
public void cryLoudly() {System.out.println("[๋๋] ํฐ ์๋ฆฌ๋ก ์ธ๋ถ์ง์ ์ ์๋ ๋ฅ๋ ฅ");}
@Override
public void fastWalk() {System.out.println("[๋๋] ๋ค๋ฐ๋ก ๋น ๋ฅด๊ฒ ๋ฌ๋ฆด ์ ์๋ ๋ฅ๋ ฅ");}
//์์๋ฉ์๋
public void change() {System.out.println("[๋๋์ธ๊ฐ] ๋ณ์ ํ ์ ์๋ ๋ฅ๋ ฅ");}
}
4. ๐ฆ(์คํ) realization > WolfHumanApp ์คํํ๋ก๊ทธ๋จ
package G_realization;
public class WolfHumanApp {
public static void main(String[] args) {
//1.
//์์ํด๋์ค ์ฐธ์กฐ๋ณ์์ ์์๊ฐ์ฒด ์ ์ฅ
//๊ฐ์ฒดํ์ฑ: Wolf + Human + WolfHuman
//WolfHuman์ฐธ์กฐ๋ณ์์ WolfHuman๊ฐ์ฒด ์ ์ฅ
WolfHuman wolfHuman=new WolfHuman();
//๋ชจ๋ ๋ฉ์๋ํธ์ถ๊ฐ๋ฅ
wolfHuman.speak(); //๋ถ๋ชจ๋ฉ์๋(Human)
wolfHuman.walk(); //๋ถ๋ชจ๋ฉ์๋(Human)
wolfHuman.smile(); //๋ถ๋ชจ๋ฉ์๋(Human)
wolfHuman.change(); //์์(๋์์ )๋ฉ์๋(WolfHuman)
wolfHuman.cryLoudly(); //์ค๋ฒ๋ผ์ด๋ ์ ์ธํ ์ถ์๋ฉ์๋(Wolf)
wolfHuman.fastWalk(); //์ค๋ฒ๋ผ์ด๋ ์ ์ํ ์ถ์๋ฉ์๋(Wolf)
//2.
//๋ถ๋ชจํด๋์ค ์ฐธ์กฐ๋ณ์์ ์์๊ฐ์ฒด ์ ์ฅ
//๊ฐ์ฒดํ์ฑ: Wolf + Human + WolfHuman
//Human์ฐธ์กฐ๋ณ์์ Human๊ฐ์ฒด ์ ์ฅ
//๋ถ๋ชจํด๋์ค๋ก ์ฐธ์กฐ๋ณ์๋ฅผ ์์ฑํ์ฌ ์์ํด๋์ค์ ๊ฐ์ฒด ์ ์ฅ
// => ์ฐธ์กฐ๋ณ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ชจํด๋์ค์ ๋ฉ์๋๋ง ํธ์ถ ๊ฐ๋ฅ
// => ๊ฐ์ฒด ํ๋ณํ์ ์ด์ฉํ์ฌ ์ฐธ์กฐ๋ณ์๋ก ์์ํด๋์ค์ ๋ฉ์๋ ํธ์ถ ๊ฐ๋ฅ
Human human=new WolfHuman();
//๋ถ๋ชจ๋ฉ์๋ ํธ์ถ
human.speak(); //๋ถ๋ชจ๋ฉ์๋(Human)
human.walk(); //๋ถ๋ชจ๋ฉ์๋(Human)
human.smile(); //๋ถ๋ชจ๋ฉ์๋(Human)
//[๋ช
์์ ๊ฐ์ฒด ํ๋ณํ]์ ์ด์ฉํ์ฌ ์์๋ฉ์๋ ํธ์ถ
((WolfHuman)human).change();
((WolfHuman)human).cryLoudly();
((Wolf)human).cryLoudly();
((WolfHuman)human).fastWalk();
((Wolf)human).fastWalk();
//3.
//๋ถ๋ชจ์ธํฐํ์ด์ค ์ฐธ์กฐ๋ณ์์ ์์๊ฐ์ฒด ์ ์ฅ
//๊ฐ์ฒดํ์ฑ: Wolf + Human + WolfHuman
//Wolf์ฐธ์กฐ๋ณ์์ Wolf๊ฐ์ฒด ์ ์ฅ
//์ธํฐํ์ด์ค๋ก ์ฐธ์กฐ๋ณ์๋ฅผ ์ ์ฅํ์ฌ ์์ํด๋์ค์ ๊ฐ์ฒด ์ ์ฅ ๊ฐ๋ฅ
//Wolf wolf=new WolfHuman();
//์์์ด ๊ฐ์ผ๋ฉด ๋ถ๋ชจ ๊ฐ์ฒด๋ผ๋ฆฌ ์๋ก ํ๋ณํ ๊ฐ๋ฅ
//4.
//์์ํด๋์ค๊ฐ ๊ฐ์ [ํด๋์ค์ ์ธํฐํ์ด์ค]๋
//[๋ช
์์ ๊ฐ์ฒด ํ๋ณํ]์ ์ด์ฉํ์ฌ ์์ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ
Wolf wolf=(Wolf)human;
//[๋ฌต์์ ๊ฐ์ฒด ํ๋ณํ]์ ์ํด ์๋์ผ๋ก ์์๋ฉ์๋ ํธ์ถ
wolf.cryLoudly(); //๋ถ๋ชจ๋ฉ์๋(Wolf)
wolf.fastWalk(); //๋ถ๋ชจ๋ฉ์๋(Wolf)
((WolfHuman)wolf).change(); //์์๋ฉ์๋(WolfHuman)
((WolfHuman)wolf).smile(); //๋ถ๋ชจ๋ฉ์๋(Human)
((WolfHuman)wolf).speak(); //๋ถ๋ชจ๋ฉ์๋(Human)
((WolfHuman)wolf).walk(); //๋ถ๋ชจ๋ฉ์๋(Human)
}
}
๋ฐ์ํ
'java > realization' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[realization] 6. ์์ํ๋(Constant)์ ์ด๊ฑฐํ(Enum) (1) | 2024.06.11 |
---|---|
[realization] 5. ๊ธฐ๋ณธ๋ฉ์๋๋ฅผ ํฌํจํ ์ธํฐํ์ด์ค (0) | 2024.06.11 |
[realization] 4. ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถฐ ์ ์ง๋ณด์์ ํจ์จ์ฑ ๋์ด๋ ๋ฐฉ๋ฒ (1) | 2024.06.10 |
[realization] 3. ๐ขBoat๐Car๐ฅRealApp (0) | 2024.06.10 |
[realization] 1. ์ธํฐํ์ด์ค์ ๊ฐ๋ (0) | 2024.06.09 |