References: Do it! 코틀린 프로그래밍 코틀린에서의 인터페이스에 대해 알아봅니다. 1. 인터페이스(Interface)코틀린의 인터페이스에는 추상 메서드나 일반 메서드가 포함될 수 있습니다. 다른 객체지향 언어와는 달리 메서드에 구현 내용이 포함될 수 있습니다. 단, 추상 클래스처럼 프로퍼티를 통해 상태를 지정할 수는 없습니다. 추상 클래스는 기본적으로 클래스이기 때문에 상속을 통해 하위로 확장이 가능합니다. 그런데 하위 클래스는 상속을 하나만 허용합니다. 또한 상위 클래스와 강한 관계가 생기며 상위 클래스의 영향을 받게 됩니다. 반면에 인터페이스는 기본적으로 클래스가 아닙니다. 따라서 상속으로 하위 클래스에 프로퍼티와 메서드를 전달하지 않습니다. 상속받은 하위 클래스라고 하기보단 구현 클래스라고 합니다. 구현 클래스는 인터페이스와 강한 관계를 갖지 않습니다. 또한 원하는 인터페이스 만큼 구현 클래스에 붙여서 필요한 메서드를 구현할 수 있습니다. 2. 인터페이스 선언 및 구현 방법.인터페이스는 interface라는 선언자를 통해 선언합니다. 구현 클래스에서는 override 라는 선언자를 통해 메서드들을 구현합니다. 다음 예시를 통해 확인하겠습니다. interface Pet{
위의 코드를 실행하면 다음과 같은 결과를 확인할 수 있습니다. 3. 인터페이스의 필요성.다음 예시를 통해 인터페이스의 필요성에 대해 알아보겠습니다. 우선 애완동물과 주인의 관계를 표현하는 코드를 작성해 보겠습니다. open class Animal(val name: String)
위의 코드를 실행하면 다음과 같은 결과를 확인할 수 있습니다. 여기서 만약 애완동물 종류가 늘어나면 어떻게 될까요? 애완동물마다 playWithPet함수를 새로 오버로딩해야 하는 문제가 생깁니다. 이러한 문제를 피하기 위해 코드를 다음과 같이 수정해 봅시다. open class Animal(val name: String) 위와 같이 수정하면 더 이상 애완동물을 추가 할 때 마다 새로운 함수를 오버로딩할 필요가 없어집니다. 기존의 Master 클래스는 각각의 애완동물 클래스에 의존적이었으나 이젠 더이상 의존적인 클래스가 아니게 됩니다. 이런 식으로 클래스의 독립성을 유지하는데 인터페이스가 큰 역할을 합니다. 4. 여러 인터페이스를 구현하는 방법클래스는 하나의 클래스만 상속이 가능합니다. 하지만 인터페이스를 이용하면 다중 상속과 같은 형태로 여러 인터페이스를 구현할 수 있습니다. 다음 예시를 통해 확인해 보겠습니다. interface Bird{
해당 코드를 실행하면 다음과 같은 결과를 확인할 수 있습니다. 위와 같은 방법을 통해 한 클래스에 여러 인터페이스를 구현하게 할 수 있습니다. 5. 인터페이스 위임인터페이스에서 by위임을 사용하는 방법을 예시를 통해 알아보겠습니다. interface Nameable { var name: String }
위의 코드를 실행한 결과는 다음과 같습니다. 이처럼 각 클래스의 위임된 멤버에 접근해 사용할 수 있습니다. |