Kotlin_可见修饰符

类,对象,接口,构造器,函数,属性和他们的setters可以使用可见修饰符。(getters和属性有一样的可见性)。和java一样,kotlin一共有4个可见修饰符:private,protected,internal和public。和java不一样,kotlin默认是public。

函数,属性和类,对象和接口能在顶级被指定。例如,直接在包内。

// file name: example.kt
package foo

fun baz() {}
class Bar {}
(1)如果你没有指定任何可见修饰符,默认public,这意味着你的声明任何地方都可以访问;
(2)如果使用private,只有在声明文件中可用;
(3)如果使用internal,在同一个module中是可以访问的;
(4)protected不能在顶级声明中使用。

例子:
// 文件名: example.kt
package foo

private fun foo() {} // 在文件 example.kt 内访问

public var bar: Int = 5 // 属性到处都可以访问
    private set         // setter 在文件 example.kt 内访问
    
internal val baz = 6    // 在同一个 module 内访问

类和接口
类内的成员声明:

(1)如果使用private,只有类内部可以访问;
(2)如果使用protected,类的子类也能访问;
(3)如果使用internal,module中客户都能访问;
(4)如果使用public,任意客户都能访问。

java用户注意:外部类不能访问它内部类的private成员。
如果你覆盖了一个protected成员并且没有指定它的可见修饰符,这个被覆盖的变量也是protected的可见性。

例子:
open class Outer {
    private val a = 1
    protected open val b = 2
    internal val c = 3
    val d = 4  // public by default
    
    protected class Nested {
        public val e: Int = 5
    }
}

class Subclass : Outer() {
    // a 不可见
    // b, c 和 d 可见
    // Nested 和 e 可见

    override val b = 5   // 'b' is protected
}

class Unrelated(o: Outer) {
    // o.a, o.b 不可见
    // o.c and o.d 可见 (同一 module)
    // Outer.Nested 不可见, 和 Nested::e 也不可见 
}
构造器:
指定主构造器的可见性,使用如下的语法(注意你需要增加constructor关键字):
class C private constructor(a: Int) { ... }
这里指定了一个private的构造器,默认,所有的构造器都是public的。

本地声明:
本地变量,函数和类不能使用可见修饰符。
Modules
internal可见修饰符意味着同一个Modules的成员是可见的。更进一步,Modules是编译在一起的一组kotlin文件的集合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值