Kotlin中級(10)- - - Kotlin類之修飾符
open class Person{ open var name: String = "" var age: Int = 0 var height: Double = 0.0 var weight: Double = 0.0 } class Student : Person(){ override var name: String get() = super.name set(value) {} }
我們可以看到Person用open修飾了,證明它可以被繼承,如果我們不用open關鍵字修飾,通過java位元組碼我們可以看出,原來的程式碼轉化成了Java之後被預設加上了final ,意味著不可被繼承
class Person{ open var name: String = "" var age: Int = 0 var height: Double = 0.0 var weight: Double = 0.0 }
// ================Person.class ================= // class version 50.0 (50) // access flags 0x31 public final class Person { // access flags 0x2 private Ljava/lang/String; name @Lorg/jetbrains/annotations/NotNull;() // invisible .....
多繼承
open class Person{ open var name: String = "" var age: Int = 0 var height: Double = 0.0 var weight: Double = 0.0 } open class Student : Person(){ override var name: String = "xxx" } class GoodStudent : Student(){ override var name: String get() = super.name set(value) {} }
在Kotlin中,我們在繼承一個類後覆蓋進行了override修飾,這個修飾也使這個屬性預設open化
介面
在Kotlin中,介面本身和它內部的方法和屬性都是預設加上open修飾符的,和普通類預設加上final修飾符石不同的