C#

인터페이스 interface - 3 인터페이스의 기본 구현 메소드

Korokke 2022. 5. 16. 15:30

인터페이스의 기본 구현 메소드

기본 구현 메소드는 여태까지 인터페이스에서 구현부 없이 선언만 했던 메소드와 달리 구현부를 가지는 메소드이다.

만약 개발자가 A라는 인터페이스를 만들고 A의 파생 클래스가 수 없이 생겨났다고 가정해보자. 이런 코드를 레거시라고 하는데... 레거시 코드는 업그레이드에 각별한 주의가 필요하다.

 

이와 같은 상황에서 초기 버전을 설계할 때 놓친 메소드를 인터페이스에 추가를 한다면 A의 모든 파생 클래스에는 에러가 나타날 것이다 파생클래스는 인터페이스의 모든 메소드를 구현하는 것이 기본 규칙이기 때문이다.

 

기본 구현 메소드는 이런 상황에서 요긴하게 사용할 수 있다.

인터페이스에 새로운 메소드를 추가할 때 기본적인 구현체를 갖도록 해서 기존에 있는 파생 클래스에서의 컴파일 에러를 막을 수 있다.

 

1. 개발자 A씨는 Wak 인터페이스에 새로운 함수를 추가하고 싶다.

2. 기존처럼 인터페이스에 메소드를 선언했더니 오류가 뜬다. 새로만든 메소드를 하위 클래스가 구현하지 않았기 때문이다. 

3. 이때 구현 메소드를 사용하면 된다. 구현부를 뜻하는 { }를 추가했더니 오류가 사라졌다.

4. 인터페이스의 기본 구현 메소드는 인터페이스 참조로 업캐스팅 했을 때만 사용할 수 있다.

이처럼 인터페이스의 ㄱ본 구현 메소드는 인터페이스 참조로 업캐스팅 했을 때만 사용할 수 있다는 점 때문에 프로그래머가 파생 클래스에서 인터페이스에 추가된 메소드를 엉뚱하게 호출할 가능성도 없다.