首页 > 解决方案 > 为什么受保护的变量是 KProperty 而公共/私有变量是 KMutableProperty?

问题描述

在以下每种情况下,我都有一些可变 var属性。根据 Javadocs,可变属性由类表示,KMutableProperty但在这些示例中,protected属性由KProperty类表示。为什么呢?

class FooA {
    var publicProp: String? = null
    protected var protectedProp: String? = null
    private var privateProp: String? = null

    fun foo() {
        val a = ::publicProp
        val b = ::protectedProp
        val c = ::privateProp
    }
}

open class FooB {
    var publicProp: String? = null
    protected var protectedProp: String? = null
    private var privateProp: String? = null

    fun foo() {
        val a = ::publicProp
        val b = ::protectedProp
        val c = ::privateProp
    }
}

class Bar : FooB() {
    fun bar() {
        val a = ::publicProp
        val b = ::protectedProp
    }
}

输入来自 IDEA 的提示

标签: kotlin

解决方案


推荐阅读