Kotlin入门学习教程之可见性修饰符
作者:冬天的毛毛雨 发布时间:2022-02-22 15:14:59
标签: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 能见到类声明处可见
来源:https://blog.csdn.net/dongrimaomaoyu/article/details/121258426


猜你喜欢
- 前言报表输出是Java应用开发中经常涉及的内容,而一般的报表往往缺乏通用性,不方便用户进行个性化编辑。Java程序由于其跨平台特性,不能直接
- 本文实例讲述了C#4.0新特性的协变与逆变,有助于大家进一步掌握C#4.0程序设计。具体分析如下:一、C#3.0以前的协变与逆变如果你是第一
- 本文实例为大家分享了Android实现旋转动画的具体代码,供大家参考,具体内容如下旋转动画(可加速、减速)1、准备工作首先需要有一个用于旋转
- 实现Android studio设置自动导包及自动导包快捷键方式一:Android studio只有导单个包的快捷键:Alt+Enter。方
- 本文介绍了Android ItemDecoration 实现分组索引列表的示例代码,分享给大家。具体如下:先来看看效果:我们要实现的效果主要
- 前言在我们用户登录的时候,为了安全性考虑,会增加验证码的功能,这里采用的是google的kaptcha;spirngboot是轻便,独立,使
- 在日常生活中,我们使用maven下载需要的jar包,但是很多的时候由于中央仓库没有,所以我们没有办法下载到需要的jar包,手动去下载上,然后
- 微软Office Word本身已经提供了另存为PDF文档功能,对于少量文档,手工使用该方式进行Word转换为PDF尚可,一旦需要处理大量的文
- 接触FFmpeg有一段时间了,它是音视频开发的开源库,几乎其他所有播放器、直播平台都基于FFmpeg进行二次开发。本篇文章来总结下采用FFm
- 主要有四个:public——成员可以由任何代码访问。private——成员只能由类中的代码访问(如果没有使用任何关键字,就默认使用这个关键字
- 这篇文章主要介绍了Java多线程状态及方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 前言我们常说的字符串为空,其实就是一个没有字符的空数组。比如:String a = "";a 就可以称为是一个空字符串。
- Android有三个基础组件Activity,Service和BroadcastReceiver,他们都是依赖Intent来启动。本文介绍的
- 今天朋友圈又火了,听说原因是 @腾讯官网 就能得到一顶绿色的帽子,啊呸,是一个好看的国庆节头像,可是听说没一会就502了,那么我们自己动手实
- Android自定义View实现等级滑动条的实例实现效果图:思路: 首先绘制直线,然后等分直线绘制点; 绘制点的时候把X值存到集
- Tab与TabHost:这就是Tab,而盛放Tab的容器就是TabHost 。如何实现?? 每一个Tab还对应了一个布局,这个就有点好玩了。
- 目录课设要求相关知识点1.服务端能够看到所有在线用户2.服务端能够强制用户下线3.客户端能够看到所有在线用户4.客户端要求能够向某个用户发送
- 最近一段时间,大家在用 Spring Security OAuth2 时可能发现有很多类过期了。大家在选择 OAuth2 依赖的时候,可能也
- 以前使用MyEclipse已经习惯了,后来改成Eclipse感觉怪怪的。在创建web项目之前首先配置好jdk环境和tomcat环境(即在开发
- 本文介绍了JAVA中实现原生的 socket 通信机制原理,分享给大家,具体如下:当前环境jdk == 1.8知识点socket 的连接处理