1 인칭 슈팅 게임을 만드는 것을 고려하십시오. 플레이어는 여러 총을 선택할 수 있습니다.
Gun
함수를 정의 하는 인터페이스 를 가질 수 있습니다 shoot()
.
우리는 서로 다른 서브 클래스가 필요 Gun
, 즉 클래스 ShotGun
Sniper
등등을.
ShotGun implements Gun{
public void shoot(){
\\shotgun implementation of shoot.
}
}
Sniper implements Gun{
public void shoot(){
\\sniper implementation of shoot.
}
}
슈터 클래스
범인은 그의 갑옷에 모든 총을 가지고 있습니다. List
그것을 나타 내기 위해 를 만들 수 있습니다.
List<Gun> listOfGuns = new ArrayList<Gun>();
사수는 필요에 따라 기능을 사용하여 총을 순환합니다. switchGun()
public void switchGun(){
//code to cycle through the guns from the list of guns.
currentGun = //the next gun in the list.
}
위의 함수를 사용하여 현재 Gun을 설정하고 호출 shoot()
되면 간단히 함수 를 호출 할 수 fire()
있습니다.
public void fire(){
currentGun.shoot();
}
촬영 기능의 동작은 Gun
인터페이스의 구현에 따라 다릅니다 .
결론
클래스 함수가 다른 클래스의 함수에 종속되면 인터페이스를 작성합니다 . 구현 된 클래스의 인스턴스 (객체)에 따라 동작이 변경 될 수 있습니다.
예를 들어 class의 fire()
함수 Shooter
는 guns ( Sniper
, ShotGun
)가 shoot()
함수 를 구현할 것으로 예상 합니다. 총을 쏴서 발사하면
shooter.switchGun();
shooter.fire();
fire()
기능 의 동작을 변경했습니다 .