1.์ ์
์ต๋ช ํด๋์ค== ์ด๋ฆ ๋ชฐ๋ผ๋ ๋๋ ํด๋์ค == ๋ค์ ๋ถ๋ ค์ ์ฐ์ผ ์ผ์ด ์๋ ํด๋์ค == 1ํ์ฉ ํด๋์ค
๊ฐ์ฒด ๋ง๋ค ๋, ๊ทธ ๊ฐ์ฒด์ ํ์ํ ๋งค์๋ ์ฌ์ ์, ์ถ์ํ ํจ์ ์ค์ฒดํ๋ฅผ ๊ฐ์ด ํด๋ฒ๋ฆผ.
(์ด๊ฑด ํด๋น ๋ด์ฉ์ผ๋ก ๋ค์ ์ฐ์ผ ์ผ์ด ์์ ๋ ์ ์ฉํ๋ค.
๋ง์ฝ ์ฌ์ฌ์ฉ์ด ํ์ํ๋ค๋ฉด ์์ ํด๋์ค๋ก ๋ง๋ค์ด๋๊ณ ์จ์ผํจ.)
2. ์ผ๋ฐ ํด๋์ค์ ๋ํ ์์ ์์ด ๋ค๋ฅธ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ
(1) ์ฐ๋ฆฌ๊ฐ ์ธ ํด๋์ค
class Coffee{
public void order(String coffee){
System.out.println("์ฃผ๋ฌธํ์ " + coffee + "๋์์ต๋๋ค. ");
}
public void returnTray(){
System.out.println("์ปคํผ ๋ฐ๋ฉ์ด ์๋ฃ๋์์ต๋๋ค.");
}
}
(2) Main method
public class _01_AnonymousClass1 {
public static void main(String[] args) {
// ์ต๋ช
ํด๋์ค
// ํด๋์ค ๋ด๋ถ์์ ์ ์ ๋๋ ํด๋์ค
Coffee c1 = new Coffee();
c1.order("์๋ฉ๋ฆฌ์นด๋
ธ");
System.out.println("---------------------");
Coffee c2 =new Coffee();
c2.order("๋ผ๋ผ");
System.out.println("---------------------");
// ๊ต์ฅํ ์นํ ์น๊ตฌ ๋ฐฉ๋ฌธ
// ์ด ์น๊ตฌ๋ง ๋ฐ๋ก ๋ญ๊ฐ ์ฑ๊ฒจ์ฃผ๊ณ ์ถ์. ์ด ํ๋์ ๋ค์ ํ ์ผ์ด ๊ฑฐ์ ์์.
// ๋ฑ ์ด ๊ฐ์ฒด ํ๋๋ง์ ์ํ Class
// ๊ฐ์ฒด ์์ฑ ์ {}๋ ์ถ๊ฐํด์ ํ์ํ ์ฌ์ ์ ์์
ํจ.
Coffee specialCoffee = new Coffee() {
@Override
public void order(String coffee) {
super.order(coffee);
System.out.println("(๊ท์๋ง) ๋ธ๊ธฐ ์ผ์ดํฌ๋ ์๋น์ค์์^^");
}
// ๋ถ๋ชจ ํด๋์ค์ ๋ด์ฉ๊ณผ ์์ ๋ค๋ฅผ ์ ์์ (super.method(); ๋บ ๊ฒฝ์ฐ)
@Override
public void returnTray() {
System.out.println("(๊ท์๋ง)์๋ฆฌ์ ๋์๋ฉด ์ ๊ฐ ์น์ธ๊ฒ์~");
}
};
specialCoffee.order("๋ฐ๋๋ผ ๋ผ๋ผ");
specialCoffee.returnTray();
}
}
3. ์ต๋ช ํด๋์ค ์ ์ธ์ ๋ฐ๋ก ๋งค์๋๋ก ๋บ ๊ฒฝ์ฐ
(1) ์ถ์ ํด๋์ค
abstract class HomemadeBurger{
public abstract void cook();
}
// ์๋ค์ํผ ์ถ์ํด๋์ค๋ ์ค์ค๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.
(2) ์ต๋ช ํด๋์ค ๊ฐ์ฒด ์์ฑ์ ์ํ ๋งค์๋
//๋ฐํํ์ด HomemadeBurger์ด๊ธฐ ๋๋ฌธ์ ๋ฆฌํด ๊ฐ๋ HomemadeBurger ์๋ฃํ ๊ฐ์ด์ด์ผํจ.
private static HomemadeBurger getBroMadeBurger() {
return new HomemadeBurger() {
@Override
public void cook() {
System.out.println("์ง์์ ๋ง๋๋ ๋์ ํ ๊ตฐ๋๋ฆฌ์");
System.out.println("์ฌ๋ฃ: ๋นต, ์นํจํ, ์๋ฐฐ์ถ ์๋ฌ๋, ๋ธ๊ธฐ์ผ, ์น์ฆ, ์ถ์ ๊ณ๋");
}
};
}
public static HomemadeBurger getMomMadeBurger(){
return new HomemadeBurger(){
@Override
public void cook() {
System.out.println("์ง์์ ๋ง๋๋ ์๋ง ํ ์์ ๋ฒ๊ฑฐ");
System.out.println("์ฌ๋ฃ: ๋นต, ์๊ณ ๊ธฐํจํฐ, ํด์๋ธ๋ผ์ด, ์์์ถ, ๋ง์๋ค์ฆ, ํผํด");
}
};
}
(3) Main Method
public static void main(String[] args) {
//์ถ์ ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋๋ฐ, ์ต๋ช
ํด๋์ค๋ก ์ค๋ฒ๋ผ์ด๋ฉ๋ ํ ํ์ ๋ค ํด๋ฒ๋ฆฌ๋ฉด ๊ฐ๋ฅํ๋ค.
HomemadeBurger momMadeBurger = getMomMadeBurger();
momMadeBurger.cook();
System.out.println("-------------------------------------------");
HomemadeBurger broMadeBurger = getBroMadeBurger();
broMadeBurger.cook();
}
4. ์ค์ค๋ก ํด๋ณด๊ธฐ
public class AnnoymousClass_Myself {
public static void main(String[] args) {
hallServing2 emp1 = new hallServing2();
emp1.WorkFinished(6);
hallServing jaden = new hallServing() {
@Override
public void WorkFinished(int i) {
System.out.println("์ ์ด๋ ์ "+ i + "์์ ํด๊ทผํ์ต๋๋ค.");
}
};
jaden.WorkFinished(19);
hallServing Sancho = GetGoingHomeTime();
Sancho.WorkFinished(22);
}
public static hallServing GetGoingHomeTime() {
return new hallServing() {
@Override
public void WorkFinished(int i) {
System.out.println("์ฐ์ด๋ "+ i + "์์ ํด๊ทผํ์ต๋๋ค.");
}
};
}
}
abstract class hallServing {
abstract public void WorkFinished(int i);
}
class hallServing2 extends hallServing {
@Override
public void WorkFinished(int i) {
System.out.println("๋ชจ๋ ์ง์์ " + i + "์์ ๋๊ฐ์ด ํด๊ทผํฉ๋๋ค.(์ผ๊ทผํ๋ ์ธ์ ์ ์ธ)");
}
}
0