본문 바로가기
모바일/Kotlin

[Kotlin] 코틀린 인터페이스, 상속과 인터페이스의 차이

by drCode 2021. 4. 11.
728x90
반응형

안녕하세요. 이번 포스팅은 코틀린 인터페이스에 대해 다뤄보도록 하겠습니다.

 

인터페이스는 상속이랑 비슷하지만 좀 다른데요,

 

상속은 부모 클래스로부터 받는 속성들을 그대로 쓸 수 있는 반면,

인터페이스는 함수를 무조건 Override 해야합니다.

 

사용은 아래와 같습니다.

interface 인터페이스명 {
    fun 함수1()
    fun 함수2()
}

함수를 선언만 하고 정의는 하지 않습니다.

 

인터페이스를 implements한 클래스는 무조건 인터페이스의 함수를 재정의합니다.

 

interface Person {
    fun eat()
    fun sleep()
}

class Student : Person {
    override fun eat() {

    }

    override fun sleep() {

    }
}

 

코틀린에서는 인터페이스에서도 함수를 구현할 수 있습니다. 그러한 함수는 implements받는 클래스는 다시 재정의하지 않아도 됩니다.

 

하지만 인터페이스에 선언은 되어있지만 구현되어있지 않은 함수는 무조건 재정의해주어야합니다.

 

재정의해주는 것을 명시해주기 위해서 abstract라는 예약어를 붙입니다.

 

fun main(args : Array<String>) {
    val student : Student = Student()
    student.sleep()
}

interface Person {
    fun eat() {
        println("먹는다")
    }
    fun sleep() {
        println("잔다")
    }

    abstract fun study() // abstract : 반드시 구현해야하는 것
}

class Student : Person {
    override fun study() {

    }
}

 

728x90
반응형

댓글