
package ex07.ch01;
abstract class 판사 {
// 몸체를 안 만들 때는 abstract를 적어라 어차피 통로임 내용이 같으면 여기서 구현
//public abstract void 심문();
public void 심문() {
System.out.println("판사는 심문한다"); // 내용이 공통이라면 여기서 구현
}
}
class 왕비 extends 판사 {
}
class 왕 extends 판사 {
}
abstract class 증인 {
public abstract void 대답();
}
class 엘리스 extends 증인 {
@Override
public void 대답() {
System.out.println("엘리스는 대답한다");
}
}
class 모자장수 extends 증인 {
public void 대답() {
System.out.println("모자장수는 대답한다");
}
}
class 토끼 extends 증인 {
@Override
public void 대답() {
System.out.println("토끼는 대답한다");
}
}
class Game {
public void 심문(판사 u) {
u.심문();
}
public void 대답(증인 u) {
u.대답();
}
}
public class AliceApp {
public static void main(String[] args) {
Game g = new Game(); // 게임 생성
엘리스 s = new 엘리스(); // 엘리스 생성
g.대답(s);
판사 ss = new 왕(); // 왕 생성
g.심문(ss);
}
}

Share article