java/realization

[realization] 3. 🚢Boat🚗Car🔥RealApp

jeri 2024. 6. 10. 01:43
반응형

1. [조부모1] 🚢realization > Boat인터페이스

package realization;
public interface Boat {
	//추상메소드
	void navigate();
}

2. [조부모2] 🚗realization > Car인터페이스

package realization;
public interface Car {
	//추상메소드
	void run();
}

3. [부모] 🚢realization > Boat🚗Car인터페이스

package realization;

//인터페이스는 다른 인터페이스를 상속받아 작성 가능
//=> 단, extends 키워드로 상속 받으며 다중 상속 가능
public interface BoatCar extends Boat, Car{

	//추상메소드
	void floating();
}

4. [자식] 🚢realization > Boat🚗Car🔥Real클래스

package realization;
public class BoatCarReal implements BoatCar{

	//조부모의 추상메소드 실체화하기
	@Override
	public void navigate() {System.out.println("바다를 향해하는 능력");}

  	//조부모의 추상메소드 실체화하기
	@Override
	public void run() {System.out.println("땅위를 달리는 능력");}

  	//부모의 추상메소드 실체화하기
	@Override
	public void floating() {System.out.println("공중에 떠 있는 능력");}
}

5. [실행] 🚢Boat🚗Car🔥RealApp 실행프로그램

package realization;
public class BoatCarRealApp {
	public static void main(String[] args) {

		//클래스가 상속받은 모든 인터페이스로 참조변수를 생성하여 자식클래스의 객체 저장 가능

		//1.
		//객체형성: Boat + Car + BoatCar + BoatCarReal
		//BoatCarReal참조변수에 BoatCarReal객체 저장
		BoatCarReal boatCarReal = new BoatCarReal();
		boatCarReal.floating();
		boatCarReal.navigate();
		boatCarReal.run();

		//2.
		//객체형성: Boat + Car + BoatCar + BoatCarReal
		//BoatCar참조변수에 BoatCar객체 저장
		//(객체형변환시) BoatCarReal 이용가능
		BoatCar boatCar = new BoatCarReal();
		boatCar.floating();
		boatCar.navigate();
		boatCar.run();

		//3.
		//객체형성: Boat + Car + BoatCar + BoatCarReal
		//Boat참조변수에 Boat객체 저장
		//(객체형변환시) BoatCar , BoatCarReal 이용가능
		Boat boat = new BoatCarReal();
		boat.navigate();
		((BoatCar)boat).run();
		((BoatCar)boat).navigate();
		((BoatCar)boat).floating();
		((BoatCarReal)boat).run();
		((BoatCarReal)boat).navigate();
		((BoatCarReal)boat).floating();
		((Car)boat).run();

		//4.
		//객체형성: Boat + Car + BoatCar + BoatCarReal
		//Car참조변수에 Car객체 저장
		//(객체형변환시) BoatCar , BoatCarReal 이용가능
		Car car = new BoatCarReal();
		car.run();
		((BoatCar)car).navigate();
		((BoatCar)car).run();
		((BoatCar)car).floating();
		((BoatCarReal)car).run();
		((BoatCarReal)car).navigate();
		((BoatCarReal)car).floating();
		((Boat)car).navigate();

	}
}



반응형