day19_Building10

육희영·2021년 10월 28일
0
package com.java1.day19;

public class Building10 {}

interface Liftable4 {
	//건물을 들어올린다.
	void liftOff();
	//건물을 이동한다.
	void move(int x, int y);
	//건물을 정지 시킨다.
	void stop();
	//건물을 착륙시킨다.
	void land();
}

//이렇게 함으로써 같은 내용의 코드를 Barrack클래스와 Factory클래스에서 각각 작성하지 않고 
//LiftableImpl클래스 한곳에서 관리 할수 있게 되었다.
class LiftableImpl implements Liftable4 {
	@Override
	public void liftOff() {/*내용 생략*/}

	@Override
	public void move(int x, int y) {/*내용 생략*/}

	@Override
	public void stop() {/*내용 생략*/}

	@Override
	public void land() {/*내용 생략*/}
}


class Academy4 extends Building10 {}

class Bunker4 extends Building10 {	}

class Barrack4 extends Building10 implements Liftable4 {
	LiftableImpl l = new LiftableImpl();	//이전 예제에서 중복되는 부분을 클래스로 따로 구현하였다.
	
	@Override
	public void liftOff() {
		l.liftOff();
	}

	@Override
	public void move(int x, int y) {
		l.move(x, y);
	}

	@Override
	public void stop() {
		l.stop();
	}

	@Override
	public void land() {
		l.land();
	}
}

class Factory4 extends Building10 implements Liftable4 {
	LiftableImpl l = new LiftableImpl();
	
	@Override
	public void liftOff() {
		l.liftOff();
	}

	@Override
	public void move(int x, int y) {
		l.move(x, y);
	}

	@Override
	public void stop() {
		l.stop();
	}

	@Override
	public void land() {
		l.land();
	}
}

0개의 댓글

관련 채용 정보