[kotlin] 코틀린에서 인터페이스의 일반적인 사용 사례

코틀린은 객체 지향 프로그래밍 언어로서, 인터페이스는 중요한 개념 중 하나입니다. 인터페이스는 클래스들 간에 공통된 기능을 정의하는데 사용되며, 다중 상속을 통해 다른 클래스나 인터페이스로부터 기능을 상속 받을 수 있습니다.

인터페이스를 사용하는 이유

인터페이스의 일반적인 사용 사례

  1. 다른 클래스로부터 기능 상속 받기: 인터페이스를 사용하여 다른 클래스로부터 추상적인 기능을 상속 받을 수 있습니다. 예를 들어, Clickable 인터페이스를 정의하여 모든 클릭 가능한 요소들이 해당 인터페이스를 구현하도록 할 수 있습니다.
interface Clickable {
    fun onClick()
}
  1. 인터페이스를 구현하는 클래스들 간에 다형성 사용하기: 인터페이스를 구현하는 클래스들은 인터페이스 타입으로 다형성을 사용할 수 있습니다. 다형성을 이용하면 런타임에 동적으로 다른 구현을 선택할 수 있습니다.
class Button : Clickable {
    override fun onClick() {
        // 버튼을 클릭했을 때 동작하는 코드
    }
}

class TextView : Clickable {
    override fun onClick() {
        // 텍스트 뷰를 클릭했을 때 동작하는 코드
    }
}
  1. 인터페이스를 통한 의존성 주입하기: 인터페이스를 사용하여 클래스들 간의 의존성을 관리할 수 있습니다. 예를 들어, Database 인터페이스를 정의하고 DatabaseImpl 클래스가 해당 인터페이스를 구현하도록 할 수 있습니다. 이렇게 함으로써, DatabaseImpl 클래스와 의존하는 클래스들 간의 결합도를 낮출 수 있습니다.
interface Database {
    fun save(data: String)
}

class DatabaseImpl : Database {
    override fun save(data: String) {
        // 데이터를 저장하는 구체적인 구현
    }
}

class UserRepository(private val database: Database) {
    fun saveUser(user: User) {
        // 사용자 정보를 데이터베이스에 저장하는 코드
        database.save(user.toJson())
    }
}

마무리

코틀린에서 인터페이스는 클래스들 간의 결합도를 낮추고, 다형성과 의존성 관리를 위해 중요한 도구입니다. 이러한 이유로, 코틀린에서 인터페이스를 사용하여 코드를 더 유연하고 확장 가능하게 만들 수 있습니다.

참고: https://kotlinlang.org/docs/interfaces.html