iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0

對於所有被包含在物件的成員來說,可以透過可見性修飾符賦予不同的讀取權。

  • private:若子類別欲存取位於父類別,會出現無法存取之錯誤訊息。
    因為原先的資料成員被宣告為private
  • protected:可同時兼顧到成員的安全性與便利性,
    因為它只能供父類別與子類別的內部來存取,外界無法更改或讀取。
  • internal:只有被標示為internal的成員能看見
  • public:任何成員都能看見
open class Outer {
    private val a = 1
    protected open val b = 2
    internal open val c = 3
    val d = 4  // public by default

    protected class Nested {
        public val e: Int = 5
    }
}

class Subclass : Outer() {
    // a is not visible
    // b, c and d are visible
    // Nested and e are visible

    override val b = 5   // 'b' is protected
    override val c = 7   // 'c' is internal
}

class Unrelated(o: Outer) {
    // o.a, o.b are not visible
    // o.c and o.d are visible (same module)
    // Outer.Nested is not visible, and Nested::e is not visible either
}

Reference


上一篇
[Day 24] 可見性修飾符
下一篇
[Day 26] 建構元: 幫助新建立的物件設定初值
系列文
從0開始的Kotlin學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言