Kotlin 第九章:可见性修饰词
来源:互联网 发布:手机网络渗透 编辑:程序博客网 时间:2024/05/01 19:49
Kotlin 第九章:可见性修饰词
前一段时间是相当的颓废,感觉学习好累,所以有一段时间博客没有更新,但还是要坚持写下去,所以今天我们一起来学习一下可见性修饰词。
在 Java 中不管是类、方法等都会有可见性修饰词,比如:private
、 public
等等。同样,在 Kotlin 中对于类,对象,接口,构造函数,属性以及它们的 setter 方法都可以有可见性修饰词,但是 Kotlin 中的可见性修饰词和 Java 中的可见性修饰词还是有区别的,下面就具体的看一下。
在 Kotlin 中有四种修饰词:private
,protected
,internal
以及 public
。默认的修饰符是 public
。
包
函数,属性和类,对象和接口可以在 top-level
声明:
package foofun baz() {}class bar {}
注意:如果没有指明任何可见性修饰词,默认使用 public ,这意味着你的声明在任何地方都可见;
注意:如果你声明为 private ,则只在包含声明的文件中可见;
注意:如果用 internal 声明,则在同一模块中的任何地方可见;
注意:protected 在 Top-level 中不可以使用
比如:
package foo // 文件名: example.ktprivate fun foo() {} // 在 example.kt 可见public var bar: Int = 5 // 任何地方都可见 // 因为 get 的可见性是由属性决定的,所有这里的 get 的可见性为 publicprivate set // setter 在 example.kt 中可见internal val baz = 6 // 在模块中可见
类和接口
直接代码说明:
open class Outer { private val a = 1 // 在Outer类中可见 protected open val b = 2 // 在Outer类和子类中可见 internal val c = 3 // 在模块中可见 val d = 4 // 默认为public protected class Nested { public val e: Int = 5 }}class Subclass : Outer() { // a不可见 // b,c和d可见 // Nested类和e可见 override val b = 5 // 重写后的b依然是protected}class Unrelated(o: Outer) { // o.a和o.b不可见 // o.d可见,在相同模块下o.c可见 // Outer.Nested不可见, Nested::e也是不可见}
注意:外部类不可以访问内部类的 private
成员。
构造函数
通过下面的语法来指定主构造函数(必须显示的使用 constructor
关键字)的可见性:
class C private constructor(a: Int) { ... }
这里构造函数是 private
。所有的构造函数默认是 public
,实际上只要类是可见的它们就是可见的 (注意 internal
类型的类中的 public
属性只能在同一个模块内才可以访问)
局部声明
局部变量,函数和类是不允许使用修饰词的。
模块
internal
修饰符是指成员的可见性是只在同一个模块中才可见的,当跨模块的时候就无法访问另一个模块的 internal
变量或方法。模块在 Kotlin 中就是一系列的 Kotlin 文件编译在一起。
后记
这一篇说实话写的有点磕磕绊绊,但总算是写完了,我想说的是,对于 internal
我的理解还不是很深刻,我相信在以后的项目中,越写会越顺的。希望各位看官能够不吝啬提出宝贵意见。
参考
Kotlin中文文档
叫我旺仔的简书
- Kotlin 第九章:可见性修饰词
- Kotlin编程之可见性修饰词(private,protected,internal,public)
- Kotlin 从学习到 Android 第九章 可见性修饰符
- Kotlin 可见性修饰符
- Kotlin 学习之可见性修饰符
- Kotlin-2.4-可见性修饰符
- Data Structures And Problem Solving Using Java (Fourth Edition)中译版(Java 修饰词与可见性)
- 《Kotlin 程序设计》第九章 Kotlin与Java混合调用
- Kotlin 官方学习教程之可见性修饰符
- Kotlin学习笔记(五)接口,可见性修饰符
- Kotlin-11.可见性修饰符(Visibility Modifiers)
- Kotlin学习之-5.4 可见性描述符
- [kotlin系列] (s2_2)属性、字段、接口、可见性修饰
- Kotlin类和对象 (四)--- 可见性修饰符
- Kotlin基础(一) 常量、变量、可见性修饰符
- 学习kotlin第八天_接口、可见性修饰符、扩展
- Kotlin最简单的入门教程——可见性修饰符,扩展,数据类,密封类
- Kotlin Reference (八) 可见性修饰符, data class,object Claz
- 最长公共子序列
- 1019. General Palindromic Number (20)
- 二分查找应用-旋转数组
- Rails 十日谈
- Hibernate笔记
- Kotlin 第九章:可见性修饰词
- 创建mysql数据库
- Servlet如何编写以及写Servlet注意事项
- c++静态数据成员和静态成员函数
- Eclipse安装maven插件
- pyton阶乘
- 【机器学习】朴素贝叶斯
- [备战软考]数据结构与算法基础
- PAT 1099. Build A Binary Search Tree (30) 叒掉语言陷阱!!