Code Archive/JAVA

Step8. Polymorphism(다형성) interface 계층구조를 이용하여 구현

쌍큐 2014. 9. 12. 13:57

** interface **

자바는 기본적으로 다중 상속을 금지하고 있다.

그래서 다중 상속처럼 구현을 가능하게 해준는 것이 인터페이스로

implement해서 사용한다.

C++에선 클래스에서 가상 함수로 만들어서 강제 오버라이딩 하도록 하였다.

하지만 자바에선 인터페이스라고 하여 따로 존재한다.


public interface Player {

public void play();// abstract 자동 삽입

}


이런 형식으로 만들어 각 클래스에선 이렇게 적용한다.

public class GomPlayer implements Player{

@Override

public void play() {

System.out.println("곰플레이어 동영상 재생하다");

}


}


public class Mp3Player implements Player {

@Override

public void play() {

System.out.println("mp3 player가 mp3 재생하다");

}

}


--계층구조가 형성 되었으므로 Player를 적용한 모든 클래스를 일괄적으로 해당 인터페이스에서 만든 메서드 수행 가능


public class PlayerService {

public void simplePlay(Player p1) {

p1.play();

}


public void allPlay(Player[] pa) {

for(int i=0;i

if(pa[i] instanceof CdPlayer){

((CdPlayer) pa[i]).insertCd();

}

pa[i].play();

}

}

}