Kotlin/포스팅

코틀린 인터페이스

짜집퍼박사(짜박) 2024. 1. 2. 13:40

코틀린에서 인터페이스는 메서드, 프로퍼티, 추상 멤버 등을 정의하는데 사용되는 추상화된 형태의 선언입니다. 인터페이스는 클래스나 다른 인터페이스에 의해 구현될 수 있으며, 여러 인터페이스를 동시에 구현할 수 있습니다. 아래에서는 코틀린에서의 인터페이스에 대해 설명하겠습니다.

 

1. 인터페이스 선언

인터페이스는 interface 키워드를 사용하여 선언합니다.

interface MyInterface {
    fun doSomething()
    val property: Int
}

위의 예제에서 MyInterface는 추상 메서드인 doSomething()과 추상 프로퍼티인 property를 정의하고 있습니다.

 

2. 인터페이스 구현

클래스에서 인터페이스를 구현하려면 : 다음에 인터페이스 이름을 명시하면 됩니다.

class MyClass : MyInterface {
    override fun doSomething() {
        println("Doing something")
    }

    override val property: Int
        get() = 42
}

클래스에서는 인터페이스의 모든 추상 멤버를 반드시 구현해야 합니다.

 

3. 다중 인터페이스 구현

클래스는 여러 인터페이스를 동시에 구현할 수 있습니다.

interface InterfaceA {
    fun methodA()
}

interface InterfaceB {
    fun methodB()
}

class MyClass : InterfaceA, InterfaceB {
    override fun methodA() {
        println("Method A")
    }

    override fun methodB() {
        println("Method B")
    }
}

 

4. 인터페이스 상속

인터페이스도 다른 인터페이스를 상속할 수 있습니다.

interface InterfaceA {
    fun methodA()
}

interface InterfaceB : InterfaceA {
    fun methodB()
}

위의 예제에서 InterfaceB는 InterfaceA를 상속하고 있습니다. 따라서 InterfaceB를 구현하는 클래스는 methodA와 methodB를 모두 구현해야 합니다.

 

5. 프로퍼티 선언

인터페이스는 추상 프로퍼티도 정의할 수 있습니다.

interface MyInterface {
    val property: Int
}

 

6. 디폴트 메서드와 프로퍼티

인터페이스에서 디폴트로 메서드나 프로퍼티를 제공할 수 있습니다.

interface MyInterface {
    fun doSomething() {
        println("Doing something")
    }

    val property: Int
        get() = 42
}

위의 예제에서 doSomething 메서드와 property 프로퍼티는 인터페이스를 구현하는 클래스에서 반드시 구현할 필요가 없습니다. 하지만 구현 클래스에서 필요에 따라 재정의할 수 있습니다.

 

7. 인터페이스와 프로퍼티 초기화

인터페이스의 프로퍼티는 초기화를 제공할 수 없습니다. 하지만 인터페이스를 구현하는 클래스에서 프로퍼티의 초기화를 할 수 있습니다.

interface MyInterface {
    val property: Int
}

클래스에서 초기화

class MyClass : MyInterface {
    override val property: Int = 42
}

 

8. 인터페이스 선언만 포함하는 객체

인터페이스를 객체 선언에 직접 사용할 수 있습니다.

object MyObject : MyInterface {
    override fun doSomething() {
        println("Object is doing something")
    }

    override val property: Int
        get() = 99
}

 

9. by 키워드를 사용한 인터페이스 위임

클래스는 여러 인터페이스를 구현할 때 by 키워드를 사용하여 다른 객체에게 구현을 위임할 수 있습니다.

interface InterfaceA {
    fun methodA()
}

interface InterfaceB {
    fun methodB()
}

class MyClass : InterfaceA by AnotherClass(), InterfaceB by AnotherClass()

class AnotherClass : InterfaceA, InterfaceB {
    override fun methodA() {
        println("Method A")
    }

    override fun methodB() {
        println("Method B")
    }
}

MyClass는 InterfaceA와 InterfaceB를 AnotherClass에게 위임하고 있습니다.

코틀린의 인터페이스는 다양한 기능을 제공하며, 클래스 간의 공통된 동작을 정의하는데 유용합니다. 인터페이스를 통해 코드의 재사용성을 높이고 유연한 구조를 설계할 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 인터페이스 봉인  (0) 2024.01.02
코틀린 봉인된 클래스  (0) 2024.01.02
코틀린 추상클래스의 추상 멤버  (0) 2024.01.02
코틀린 추상 클래스  (0) 2024.01.02
코틀린 공통 메서드  (0) 2024.01.02