-
Java - 클래스와 인터페이스의 상속개발 (dev)/Java 2023. 7. 27. 13:18
클래스는 인터페이스를 상속 받을때 해당 인터페이스에 정의된 모든 메서드를 반드시 구현해야 한다.
인터페이스는 메서드의 시그니처만을 정의하고, 실제 동작은 구현 클래스에서 해야하기 때문에, 구현 클래스에서는 인터페이스의 메서드를 구현해야 한다.
public interface MyInterface { void myMethod(); } public class MyClass implements MyInterface { @Override public void myMethod() { // 구현 내용 작성 } }
이 코드와 같이 구현 클래스가 인터페이스에 존재하는 메서드를 오버라이딩 해주었다.
그럼 인터페이스가 인터페이스를 상속받는 경우는 어떨까?
public interface MyInterface { void myMethod(); } public interface MySubInterface extends MyInterface { // MyInterface의 메서드를 상속받지만, 구현은 여전히 필요하지 않음 void anotherMethod(); } public class MyClass implements MySubInterface { @Override public void myMethod() { // 구현 내용 작성 } @Override public void anotherMethod() { // 구현 내용 작성 } }
이와같이 인터페이스가 다른 인터페이스를 상속받을 때는 해당 인터페이스에 정의된 메서드를 전부 구현할 필요는 없다. 상위 인터페이스의 메서드들은 하위 인터페이스에서 선언만 된다. 이렇게 하위 인터페이스는 상위 인터페이스의 메서드 시그니처를 상속받아야 하지만, 메서드의 구현은 하위 인터페이스를 구현하는 클래스에서 해야한다. 즉 하위 인터 페이스와 상위 인터페이스의 메서드를 전부 구현 클래스에서 오버라이딩 해주어야 한다는 것이다.