kotlin 학습 노트 Ⅲ——확장

2889 단어 kotlin

건설자



하위 클래스에는 기본 생성자가 있습니다.



하위 클래스에 기본 생성자가 있는 경우 기본 클래스는 기본 생성자에서 즉시 초기화되어야 합니다.

open class Person(var name : String, var age : Int){// base class

}

class Student(name : String, age : Int, var no : String, var score : Int) : Person(name, age) {

}

// test
fun main(args: Array<String>) {
    val s =  Student("Runoob", 18, "S12346", 89)
    println("name: ${s.name}")
    println("age: ${s.age}")
    println("number: ${s.no}")
    println("scpre: ${s.score}")
}

산출:

name: Runoob
age: 18
number: S12346
score: 89

하위 클래스에는 기본 생성자가 없습니다.



하위 클래스에 기본 생성자가 없으면 기본 클래스는 각 보조 생성자의 super 키워드로 초기화되거나 다른 생성자의 프록시로 초기화되어야 합니다. 기본 클래스를 초기화할 때 기본 클래스의 다른 생성자를 호출할 수 있습니다.

class Student : Person {

    constructor(ctx: Context) : super(ctx) {
    } 

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

예시

/**base class**/
open class Person(name:String){
    /**secondary constructor**/
    constructor(name:String,age:Int):this(name){
        //initialize
        println("------super class secondary constructor-------")
    }
}

/**sub-class extends Person class**/
class Student:Person{

    /**secondary constructor**/
    constructor(name:String,age:Int,no:String,score:Int):super(name,age){
        println("-------sub-class secondary constructor---------")
        println("name: ${name}")
        println("age: ${age}")
        println("number: ${no}")
        println("score: ${score}")
    }
}

fun main(args: Array<String>) {
    var s =  Student("Rango", 18, "S12345", 89)
}

산출

------super class secondary constructor-------
------sub-class secondary constructor-------
name: Rango
age: 18
number: S12345
score: 89

우세하다



기본 클래스에서 fun을 사용하여 함수를 선언하면 함수는 기본적으로 최종 장식으로 설정되며 하위 클래스에서 재정의할 수 없습니다. 하위 클래스가 함수를 재정의할 수 있는 경우 수동으로 open을 추가하여 장식해야 하며, 하위 클래스 재정의 메서드는 override 키워드를 사용합니다.
예시

/**super class**/
open class Person{
    open fun study(){       // allow overridden
        println("I am Person Clss")
    }
}

/**sbuclass extend Person class**/
class Student : Person() {

    override fun study(){    // override function
        println("I am student class")
    }
}

fun main(args: Array<String>) {
    val s =  Student()
    s.study();

}

산출

I am student class

좋은 웹페이지 즐겨찾기