-
[Kotlin] ExtendsKotlin 2022. 9. 14. 15:32
fun main(){ val s1= SubClass1() // 자식 클래스의 객체 생성 println("s1.subMember1: ${s1.subMember1}") s1.subMember1() println("s1.superMember1: ${s1.superMember1}") s1.superMethod1() } // 상속이 될 클래스들이 final로 만들어짐. 이는 상속 불가능하므로 open 키워드를 옆에 붙임 open class SuperClass1{ var superMember1 = 100 fun superMethod1(){ println("method of SuperClass1") } } // 상속은 extends 키워드 없이 부모 클래스 이름을 ':', '()'와 함께 클래스 옆에 써줌 class SubClass1 : SuperClass1(){ val subMember1 = 200 fun subMember1(){ println("method of SubClass1") } }
대표생성자가 있을 경우// 부모 클래스에 대표생성자가 있다면 open class SuperClass11(val a1:Int){} // 상속을 위해 부모클래스 이름을 쓰고 괄호를 연결했다면 // 괄호 안에 부모클래스의 대표생성자 매개변수에 맞게 전달인수를 전달해줌 // 그렇지 않으면 부모클래스의 멤버변수가 생성되지 않고 상속도 안 되는 에러를 발생함 class SubClass11: SuperClass11(100){} // 자식클래스의 생성자가 따로 기술되어야 한다면 아래와 같이 표현 // 자신의 대표생성자는 없지만 부모클래스의 대표생성자가 있으므로 // 아래와 같이 super 키워드를 사용함 class SubClass12: SuperClass11{ constructor(): super(100){} } // 자식클래스에도 대표생성자가 있다면 아래와 같이 작성 // 또한 constructor 키워드 생략 가능 // class SubClass4 constructor(var a4:Int): SuperClass2(100){ class SubClass13(var a4:Int): SuperClass11(100){ constructor(): this(100){} }
'Kotlin' 카테고리의 다른 글
[Kotlin] Any Class (0) 2022.09.14 [Kotlin] Override (0) 2022.09.14 [Kotlin] Constructor (0) 2022.09.14 [Kotlin] Class (0) 2022.09.14 [Kotlin] Array (0) 2022.09.14