[ 메인 메소드 ]
public class MainWrapper {
public static void main(String[] args) {
TourGuide guide1 = new TourGuide();
guide1.setTour(new HawaiiTour());
guide1.sightseeing();
guide1.leisure();
guide1.meal();
TourGuide guide2 = new TourGuide();
guide2.setTour(new JapanTour());
guide2.sightseeing();
guide2.leisure();
guide2.meal();
}
[ 여행 인터페이스 ]
//인터페이스를 만들면 무조건 인터페이스(Tour)를 타입으로 쓴다.
public interface Tour {
void sightseeing();
void leisure();
void meal();
}
[ 여행 가이드 클래스 ]
public class TourGuide implements Tour {
// Field
private Tour tour;
// Method
public Tour getTour() {
return tour;
}
public void setTour(Tour tour) {
this.tour = tour;
}
public void sightseeing() {
tour.sightseeing();
}
public void leisure() {
tour.leisure();
}
public void meal() {
tour.meal();
}
}
[ 하와이 여행 클래스 ]
public class HawaiiTour implements Tour {
@Override
public void sightseeing() {
System.out.println("와이키키해변");
}
@Override
public void leisure() {
System.out.println("헬기투어");
}
@Override
public void meal() {
System.out.println("파인애플피자");
}
}
[ 일본 여행 클래스 ]
public class JapanTour implements Tour {
@Override
public void sightseeing() {
System.out.println("돈키호테");
}
@Override
public void leisure() {
System.out.println("온천");
}
@Override
public void meal() {
System.out.println("스시");
}
}