ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kotlin] Extends
    Kotlin 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

    댓글

Designed by Tistory.