您的位置:首页 > 其它

Kotlin_可见修饰符

2017-05-25 15:02 218 查看
类,对象,接口,构造器,函数,属性和他们的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文件的集合。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息