티스토리 뷰

반응형

상속이란 부모의 자원을 자식이 상속받아 사용하는 것

 

자바에서 상속 방법 class ChildClass extends + '부모 클래스'

class ParentClass {}
class ChildClass extends ParentClass {}

 

코틀린에서 상속 방법 class ChildClass : '부모 클래스'

여기서 자바와 다르게 코틀린은 부모 클래스 앞에 open 키워드를 사용합니다.

open class ParentClass {}
class ChildClass : ParentClass() {}

 

만약 open이라는 키워드를 사용하지 않고 코드를 작성할 경우

This type is final, so it cannot be inherited from 이라는 에러 문구가 나옵니다.

코틀린은 open 키워드가 없을 경우 다른 곳에서 상속 받지못하는 final class로 정의됩니다.

 

자바                                           코틀린

final class ParentClass{}   ==   class ParentClass{}

class ParentClass{}           ==   open class ParentClass{}

 

코틀린에서는 상속을 명시 하지 않을경우 클래스 계층구조 ROOT에 위치한 Any 클래스가 상속됩니다.

class ClassName
class ClassName : Any()
// 두개 동일

 

만약 안드로이드의 View 컴포넌트 처럼 부모 클래스에 기본생성자가 없으면 각 보조 생성자는 super 키워드를 사용하여 기본 유형을 초기화 하거나 이를 수행하는 다른 생성자에 위임해야합니다. 이 경우, 다른 2 차 생성자는 기본 유형의 다른 생성자를 호출 할 수 있습니다.

class MyView : View {
    constructor(ctx: Context) : super(ctx)
    constructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs)
}

 

위 코드를 이해하기 위해서는 아래 코틀린 문법이 필수입니다. 

2019/05/19 - [Kotlin] - 코틀린 기초 문법) 1. 코틀린 변수 정의하기

2019/05/22 - [Kotlin] - 코틀린 기초 문법) 10. 코틀린 클래스와 생성자, init 키워드 알아보기

반응형
댓글
최근에 올라온 글
최근에 달린 댓글