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
0
投稿
猜你喜欢
- SpringTask是Spring自带的功能。实现起来比较简单。使用SpringTask实现定时任务有两种方式:1.注解方式基于注解@Sch
- 首先在新建了一个web服务文件。public SqlWhhWebService1() &nbs
- 本篇文章主要介绍了java自动生成编号的实现,分享给大家,具体如下/** * 自动生成编号格式:yyMM+四位流水号 */ @Reques
- 前言:项目是使用Java swing开发,可实现基础数据维护用户登录、系统首页酒店信息管理、主要模块是开房管理、退房管理、房间信息管理、顾客
- 同步器简介 学习以来对线程的操作有很大的改观,从c/c++的mute
- 1.一段简单的代码首先来一段代码,这个是单例模式,可能有的人不知道什么是单例模式,我就简单说一下单例模式是指一个类有且只有一种对象实例。这里
- 本文主要为大家整理Java常见的面试题,供大家参考,具体内容如下1. Java中sleep和wait的区别① 这两个方法来自不同
- 碎片的创建要使用碎片先要创建一个碎片,创建一个碎片很简单。1.新建一个碎片布局,fragment.xml<?xml version=&
- 在一次Java解析xml文件的开发过程中,使用SAX解析时,出现了这样一个异常信息:Error on line 60 of document
- 实现多线程的方式:实现多线程的方式有多种,这里只列举两种常用的,而第一种继承Thread的方式无法实现多窗口卖票。一,继承Thread方式:
- IntInt是Java八种基本数据类型之一,一般大小为4字节32位,取值范围为2-31—231。两个Int类型变量用“==”比较的是值的大小
- C#之继承继承、封装和多态是面向对象编程的重要特性。其成员被继承的类叫基类也称父类,继承其成员的类叫派生类也称子类。派生类隐式获得基类的除构
- 一、前期工作1.开启邮箱服务开启邮箱的POP3/SMTP服务(这里以qq邮箱为例,网易等都是一样的)2.导入依赖在springboot项目中
- 上一篇文章讲了如何获取所有联系人,这篇文章就讲下怎么保存联系人数据到本机通讯录。这里我就假设你已经拿到了要保存的联系人数据。 因为
- 一、效果:我们看到很多软件的通讯录在右侧都有一个字母索引功能,像微信,小米通讯录,QQ,还有美团选择地区等等。这里我截了一张美团选择城市的图
- 枚举的基本用法回顾以下是一个常见的 C# 枚举(enum)的示例:enum Weekday{
- JAVA中的类只能是public 或者package的。这是符合逻辑的:人们定义类的初衷就是为了让别人用的。倘若是private,别人怎么调
- 1、前言Android Studio对模块化开发提供的一个很有用的功能就是可以在主项目下新建库项目(Module),但是在使用库项目时却有一
- 官网文档背景项目A中需要多数据源的实现,比如UserDao.getAllUserList() 需要从readonly库中读取,但是UserD
- 本文实例讲述了C#根据反射和特性实现ORM 映射的方法。分享给大家供大家参考。具体如下:(一)关于反射什么是反射?反射就是在运行时,动态获取