在Kotlin中,不管是类、接口、构造函数、函数、属性及其设置器都具有可见性修饰符,下面这篇文章主要给大家介绍了关于Kotlin入门学习教程之可见性修饰符的相关资料,需要的朋友可以参考下
前言
在Kotlin中四种可见性修饰符:private、protected、internal、public,如果没有显示指定修饰符的话,默认可见性是public。
四种修饰符的说明
- public修饰符表示 公有 。此修饰符的范围最大。当不声明任何修饰符时,系统会默认使用此修饰符。
- internal修饰符表示 模块 。对于模块的范围在下面会说明。
- protected修饰符表示 私有`+`子类。值得注意的是,此修饰符不能用于顶层声明,在下面可以看到。
- private修饰符表示 私有 。此修饰符的范围最小,即可见性范围最低。
1、包场景下的可见性修饰符
package com.iflytek.basekotlin.`class`
//函数、属性、类、对象和接口都可以在顶层声明,即直接在包内 2021/6/22
fun method(){} // 默认为public ,随处可见 2021/6/22
private class ClassA(){} // 只在该文件内可见 2021/6/22
private val classA:ClassA = ClassA() // 此处只能用private,因为ClassA只在该文件内可见,所以其对象也是 2021/6/22
internal interface InterfaceA{} // 只在同模块内可见 2021/6/22
protected var name:String = "" // 错误:Modifier 'protected' is not applicable to 'top level property without backing field or delegate' 2021/6/22
- 如果不指定任何可见性修饰符,默认为public,这意味着随处可见
- 如果声明为private,只在声明的文件内可见
- 如果声明为internal,只在相同的模块内可见
- protected不适用于顶层声明,即不适用于此场景
2、类内部声明的成员
open class VisibilityDemo{
private val a = true // 只在该类内部可见 2021/6/22
protected val b = true // 在类内部和其子类中可见 2021/6/22
internal val c = true // 能见到类声明的本模块任何客户端都可见 2021/6/22
val d = true // 能见到类声明的任何客户端都可见 2021/6/22
}
class SubVisibility:VisibilityDemo(){
fun visible(){
//println(a) // 不可见 2021/6/22
println(b) // 可见 2021/6/22
println(c) // 可见 2021/6/22
println(d) // 可见 2021/6/22
}
}
class UnRelated(){
fun visible(visibilityDemo: VisibilityDemo){
// println(visibilityDemo.a) // 不可见 2021/6/22
// println(visibilityDemo.b) // 不可见 2021/6/22
println(visibilityDemo.c) // 可见 2021/6/22
println(visibilityDemo.d) // 可见 2021/6/22
}
}
- private 只在类内部可见
- protected 在类及其子类中可见
- internal 能见到类声明的本模块内可见
- public 能见到类声明处可见
总结
到此这篇关于Kotlin入门学习教程之可见性修饰符的文章就介绍到这了,更多相关Kotlin可见性修饰符内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:Kotlin入门学习教程之可见性修饰符


基础教程推荐
猜你喜欢
- iOS中如何判断当前网络环境是2G/3G/4G/5G/WiFi 2023-06-18
- iOS开发 全机型适配解决方法 2023-01-14
- iOS开发使用XML解析网络数据 2022-11-12
- Flutter进阶之实现动画效果(三) 2022-10-28
- MVVMLight项目Model View结构及全局视图模型注入器 2023-05-07
- Android实现短信验证码输入框 2023-04-29
- Android Compose自定义TextField实现自定义的输入框 2023-05-13
- Android开发Compose集成高德地图实例 2023-06-15
- iOS Crash常规跟踪方法及Bugly集成运用详细介绍 2023-01-18
- IOS获取系统相册中照片的示例代码 2023-01-03