- 구체적인 것을 만들어서 “추상화” 하는 것

package ex07.ch01;
abstract class 판사 {
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);
}
}

package ex07.ch01;
abstract class 판사 {
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 game = new Game();
판사 p1 = new 왕();
game.심문(p1);
증인 z1 = new 엘리스();
game.대답(z1);
}
}

Share article