다중구현
자바는 다중 상속을 할 수 없습니다. 한번에 하나의 클래스만 상속할 수 있습니다.
상속을 연속해서 받는 경우 다중 상속과 비슷한 기능은 구현할 수 있습니다.
인터페이스는 다중상속을 지원합니다. 하지만 이 다중상속은 구현이 이루어진 기능을 상속하는것이 아니라 추상 메소드를 상속받는 것에 불과함으로 최하의 클래스는 상속받은 모든 클래스를 직접 구현해야 합니다. 따라서 상속의 개념 보다는 다중 구현의 개념에 가깝습니다. 하지만 C++은 실제로 기능이 구현된 클래스를 다중상속 받을 수 있습니다. 이로인해 부모 클래스가 중복되거나 메소드의 소속이 불분명해져 추가적인 코드가 필요하며 유지보수시 소스 분석이 매우 어렵습니다.
Green.java
interface Green {
//추상 메소드
public String greenColor();
}
GreenImpl.java
class GreenImpl implements Green{
public String greenColor(){
return "초록색입니다.★";
}
}
Red.java
interface Red {
//추상 메소드
public String redColor();
}
RedImpl.java
class RedImpl implements Red{
public String redColor(){
return "빨간색입니다.★";
}
}
ColorImpl.java
class ColorImpl implements Green, Red{
public String greenColor(){
return "초록색입니다.";
}
public String redColor(){
return "빨간색입니다.";
}
}
ColorMain.java
public class ColorMain{
public static void main(String[] args) {
Green g = new GreenImpl();
System.out.println(g.greenColor());
Red r = new RedImpl();
System.out.println(r.redColor());
ColorImpl c = new ColorImpl();
System.out.println(c.greenColor());
System.out.println(c.redColor());
}
}
Last updated