Kotlin学习(11):可见性修饰符
2018-01-14 18:32
239 查看
开发环境:IntelliJ IEDA
个人博客:http://blog.csdn.net/IInmy
项目源码:https://github.com/Rushro2m/KotlinForOfficial
官方文档中文版:https://www.kotlincn.net/docs/reference/visibility-modifiers.html
private
protected
internal
public
如果没有显式指定修饰符的话,默认可见性都是public。
每一个修饰符都限制了一定的范围:
未指定修饰符时,默认为
声明为
声明为
例如:
要指定一个类的主构造函数的可见性,使用以下语法,需要添加一个显式的
一个IntellJ IEDA模块;
一个Maven或者Gradle项目;
一次
个人博客:http://blog.csdn.net/IInmy
项目源码:https://github.com/Rushro2m/KotlinForOfficial
官方文档中文版:https://www.kotlincn.net/docs/reference/visibility-modifiers.html
1、应用域
类、对象、接口、构造函数、方法、属性和它们的setter都可以有可见性修饰符。在Kotlin中有四个可见性修饰符:private
protected
internal
public
如果没有显式指定修饰符的话,默认可见性都是public。
2、包名
函数、属性和类、对象和接口可以在顶层声明,即直接在包内:package foo fun baz(){} class Bar{}
每一个修饰符都限制了一定的范围:
未指定修饰符时,默认为
public,表明随处可见
声明为
public时,它只会在声明它的文件内可见;
声明为
internal,它会在相同模块内随处可见;
protected不适用于顶层声明。
例如:
package foo //在此类内随处可见 private fun foo(){} //该属性随处可见 public var bar: Int = 5 //setter只在此文件内可见 private set //相同模块内可见 internal val baz = 6
3、类和接口
对于类内部声明的成员:private意味着只在这个类内部(包含其所有成员)可见;
protected和
private一样+在子类中可见。
internal能剪刀类声明的本模块内的任何客户端都可见其
internal成员;
public能见到类声明的任何客户端都是可见其
public成员。
open class Outer { private val a = 1 protected open val b = 2 internal val c = 3 val d = 4 protected open class Nested { public val e: Int = 5 } } class Subclass : Outer() { //b被open修饰,可以直接访问 override val b: Int get() = 5 val xx = Outer() //修饰符是protected或者private private var yy = Outer.Nested() fun foo() { //c,d,e可见,但是需要通过对应对象 println(xx.c) println(xx.d) print(yy.e) } } class Unrelated(o: Outer) { val kk = o fun stringPrint() { //a,b不可见,c,,d可见 print(kk.c) print(kk.d) } }
要指定一个类的主构造函数的可见性,使用以下语法,需要添加一个显式的
constructor关键字:
class C private constructor(a: Int){ //代码块 }
4、模块
可见性修饰符internal意味着该成员只在相同模块内可见。更具体的说,一个模块是编译在一起的一套Kotlin文件:
一个IntellJ IEDA模块;
一个Maven或者Gradle项目;
一次
<kotlinc>Ant任务执行所编译的一套文件。
相关文章推荐
- 学习kotlin第八天_接口、可见性修饰符、扩展
- Kotlin学习(四)—— 类和对象,继承,覆盖,抽象类,属性和字段,接口,可见性修饰符,扩展
- Kotlin 从学习到 Android 第九章 可见性修饰符
- Kotlin学习(四)—— 类和对象,继承,覆盖,抽象类,属性和字段,接口,可见性修饰符,扩展
- Kotlin 学习之可见性修饰符
- Kotlin学习(十): 可见性修饰符和数据类
- Kotlin 官方学习教程之可见性修饰符
- Kotlin-2.4-可见性修饰符
- 【Java学习】Java修饰符可见域
- Kotlin基础(一) 常量、变量、可见性修饰符
- Kotlin Reference (八) 可见性修饰符, data class,object Claz
- Kotlin学习笔记3-11 类和对象-对象
- Kotlin_可见修饰符
- Kotlin 可见性修饰符
- Kotlin-可见性修饰符
- Kotlin 中的操作符重载汇总表 与 可见性修饰符总结
- Kotlin学习之访问修饰符
- 前端学习笔记-jquery-11-(过滤选择器)过滤器:可见性过滤器
- python基础教程_学习笔记11:魔法方法、属性和迭代器
- 【3】Kotlin学习之循环以及kotlin中的三元运算