본문 바로가기

자바 기초

자바 인터페이스 상속 - Do it! 자바프로그래밍 기초

인터페이스 간에도 상속이 가능하다. 인터페이스 간 상속은 구현 코드를 통해 기능을 상속하는 것이 아니므로 '형 상속'

이라고 부른다.

클래스의 경우에는 하나의 클래스만 상속받을 수 있지만, 인터페이스는 여러 개를 동시에 상속받을 수 있다.

한 인터페이스가 여러 인터페이스를 상속받으면, 상속받은 인터페이스에서는 상위 인터페이스에서 선언한 추상 메서드를 모두 가지게 된다.

 

public interface X {
	void x();
}

public interface Y {
	void y();
}

public interface MyInterface extends X, Y {
	void myMethod();
}
public class MyClass implements MyInterface {
	@Override
    public void x() {
    	System.out.println("x()");
    }
    
    @Override
    public void y() {
    	System.out.println("y()");
    }
    
    @Override
    public void myMethod() {
    	System.out.println("myMethod()");
    }
}
public class MyClassTest {
	public void static main(String[] args) {
    	MyClass mClass = new MyClass();
        
        X xClass = mClass;
        xClass.x();         // 상위 인터페이스 X형으로 대입하면 x()만 호출 가능
        
        Y yClass = mClass;
        yClass.y();          // 상위 인터페이스 Y형으로 대입해서 y()만 호출 가능
        
        MyInterface iClass = mClass;
        iClass.myMethod();
        iClass.x();
        iClass.y();          // 구현한 인터페이스형 변수에 대입하면 인터페이스가 상속한
    }                        // 모든 메서드 호출 가능
}

위 코드처럼 상위 인터페이스형(X 또는 Y)이라면 해당 인터페이스의 메서드만 호출 가능하고,

상속받은 인터페이스형(MyInterface)이라면 해당 인터페이스의 메서드와 상위인터페이스의 메서드까지 모두 호출 가능하다.