Java

2024.04.25 인터페이스에 대한 고찰

정훈5 2024. 4. 25. 10:29
학습 목표 

1. 인터페이스를 통한 동물 경주 게임 설계 해보기  
2. RaceParticipant 와 Turtle에 관계는? 
3. 연극에 로미오라는 역할 그리고 배우1과 배우2

 

인터페이스를 통한 동물 경주 게임 설계 해보기

여기에 거북이, 토끼 클래스가 존재합니다. 어느 날 둘이 경주 게임에 참가하자고 합의를 하였습니다.

단, 참가를 하기 위해서는 본인에 이름과 경주 속도를 알려주는 장치를 달아야 중개가(일종에 스펙) 가능하다고 합니다.

이 상황을 코드로 작성해 봅시다.

package basic.ch22;

public interface RaceParticiant {
	
	// public abstract String getname();
	String getname();
	
	// public abstract int getSpeed();
	int getSpeed();
}

 

package basic.ch22;

public class Turtle implements RaceParticiant {
	
	private final int speed = 2;
	
	@Override
	public String getname() {
		return "깡총깡총 거북이";
	}
	
	@Override
	public int getSpeed() {
		return speed;
	}

}

 

package basic.ch22;

public class Rabbit implements RaceParticiant {

	private final int speed = 10;
	@Override
	public String getname() {
		return "엄금엄금 토끼";
	}
	
	@Override
	public int getSpeed() {
		return speed;
	}
}

 

연극에 로미오라는 역할 그리고 배우1과 배우2

더블 캐스팅(Double Casting) : 주연 역할을 두 명의 배우가 번갈아 가며 연기하여,

공연의 부담을 분담하거나 다양한 해석을 관객에게 제공할 수 있는 장점이 있습니다.

 

package basic.ch22;

public interface Romeo {
	
//	public abstract void performAsRomeo();
	void  performAsRomeo();
}

 

package basic.ch22;

public class Actor implements Romeo {
	
	String name;
	
	public Actor(String name) {
		this.name = name;
	}
	
	@Override
	public void performAsRomeo() {
		System.out.println(name +" 가 오호 ~ 줄리엣 연극합니다.");
	}
}

 

package basic.ch22;

public class Student implements Romeo {

	String name;

	public Student(String name) {
		this.name = name;
	}

	@Override
	public void performAsRomeo() {
		System.out.println("학교 축제에서 " + name + " 이 연극을 합니다.");
	}
}

 

package basic.ch22;

public class RomeoTest {
	
	public static void main(String[] args) {
		
		Actor actor = new Actor("정우성");
		actor.performAsRomeo();
		
		Student student = new Student("야스오");
		student.performAsRomeo();
		
	}
}