본문 바로가기

백엔드개발자 준비하기

[백엔드개발자 준비하기] 상속_클래스형변환

[Transpotation]

public class Transportation {

	public void go() {
		
	}

	public void stop() {
		
	}

[Taxi]

public class Taxi extends Transportation {

	@Override // @로  시작하는 문법을 어노테이션이라고 한다
	public void go() {
		System.out.println("택시를 타고 출발");
	}

	@Override
	public void stop() {
		System.out.println("택시를 타고 도착");
	}
	
	public void checkTaxiNumber() {
		System.out.println("택시 번호 확인");
	}

[Subway]

public class Subway extends Transportation {

	@Override // @로  시작하는 문법을 어노테이션이라고 한다
	public void go() {
		System.out.println("지하철을 타고 출발");
	}

	@Override
	public void stop() {
		System.out.println("지하철을 타고 도착");
	}
	
	public void checkRoute() {
		System.out.println("지하철 노선 확인");
	}

[Main]

public static void main(String[] args) {
		Taxi taxi = new Taxi();
		Subway subway = new Subway();

		Transportation[] transportations = new Transportation[6];

		transportations[0] = taxi;
		transportations[1] = subway;
		transportations[2] = taxi;
		transportations[3] = subway;
		transportations[4] = taxi;
		transportations[5] = subway;

		for (int i = 0; i < transportations.length; i++) {
			if (transportations[i] instanceof Taxi) {
				Taxi tx = (Taxi) transportations[i];
				tx.checkTaxiNumber();
			} else if (transportations[i] instanceof Subway) {
				Subway sw = (Subway) transportations[i];
				sw.checkRoute();
			}
			transportations[i].go();
		}

		for (Transportation t : transportations) {
			t.stop();
		}
	}