개발일지

Kotlin in A..Z (14) - 상속 본문

Kotlin (코틀린)

Kotlin in A..Z (14) - 상속

강태종 2020. 7. 15. 12:32

- 상속

상속을 하면 부모 클래스의 프로퍼티와 메서드를 불려받는다.

open 키워드를 붙여서 상속 시킬 수 있다.

 

코드

open class Parent(val name: String) {

}

class Child(name: String) : Parent(name) {

}

fun main() {
    val child = Child("개발일지")
    println(child.name)
}

 

결과

개발일지

자바는 open 키워드를 안붙여도 상속 시킬 수 있고, final 키워드를 붙여야 최하위 클래스가 되지만, 코틀린은 open 키워드를 붙여야 상속 시킬 수 있고, open 키워드를 붙이지 않으면 최하위 클래스가 된다.


- 메소드 오버라이딩

open과 override 키워드를 통해 부모의 클래스로 부터 상속받은 메서드를 자신에게 맞게 수정할 수 있다.

 

코드

open class Parent() {
    open fun action() {
        println("Parent")
    }
}

class Child() : Parent() {
    override fun action() {
        println("Child")
    }
}

fun main() {
    val parent = Parent()
    parent.action()

    val child = Child()
    child.action()
}

 

결과

Parent
Child

- super와 this

super은 부모 클래스를 뜻하고, this는 자기 자신을 뜻한다.

super로 부모의 프로퍼티와 메소드를 참조할 수 있고, this로 자기 자신의 프로퍼티와 메소드를 참조할 수 있다.

 

코드

open class Parent() {
    open fun action() {
        println("Parent")
    }
}

class Child() : Parent() {
    override fun action() {
        println("Child")
    }

    fun func() {
        super.action() // 부모의 action을 참조
        this.action() // 자신의 action을 참조
        action() // 자신의 action을 참조, 자신의 프로퍼티와 메소드를 참조할 땐 생략가능
    }
}

fun main() {
    val child = Child()
    child.func()
}

 

결과

Parent
Child
Child
Comments