20130527
/*
interface i에 stop()을 추가
class a,b,c에서 이를 구현하고 사용하도록 수정
* 새로운 interface I2에 추상메서드 turn_on(),turn_off를 정의
* class B,C가 interface I2도 상속받도록
* class A에서 interface I2 를 사용하도록 수정
*/
package interfacetest2;
class A {
void autoPlay(I i) {
i.play();
}
void autoStop(I i) {
i.stop();
}
void turn_on(I2 i) {
i.turn_on();
}
void turn_off(I2 i) {
i.turn_off();
}
}
interface I {
public abstract void play();
public abstract void stop();
}
interface I2 {
public abstract void turn_on();
public abstract void turn_off();
}
class B implements I, I2 {
public void play() {
System.out.println("play in B class");
}
public void stop() {
System.out.println("play in B stop");
}
public void turn_on() {
System.out.println("play in B turn on");
}
public void turn_off() {
System.out.println("play in B turn off");
}
}
class C implements I,I2 {
public void play() {
System.out.println("play in C class");
}
public void stop() {
System.out.println("play in C stop");
}
public void turn_on() {
System.out.println("play in C turn on");
}
public void turn_off() {
System.out.println("play in C turn off");
}
}
class InterfaceTest2 {
public static void main(String[] args) {
A a = new A();
a.autoPlay(new B());// 비를 인터페이스로 넘김
a.autoPlay(new C());// 씨를 인터페이스로 넘김
a.autoStop(new B());
a.autoStop(new C());
a.turn_on(new B());
a.turn_on(new C());
a.turn_off(new B());
a.turn_off(new C());
}
}