16:kotlin类和对象 -- 可见性修饰符(Visibility modifiers)

2023-11-30 10:04

本文主要是介绍16:kotlin类和对象 -- 可见性修饰符(Visibility modifiers),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

类(Classes)、对象(objects)、接口(interfaces)、构造函数(constructors)和方法(functions),以及属性(properties )及其setters,都可以有可见性修饰符。Getter的可见性始终与它们所属的属性相同。

有四种可见性修饰符:private(私有)、protected(受保护的)、internal(内部的)和public(公共的)。默认可见性是public(公共的)。

包(Packages)

函数、属性、类、对象和接口可以直接在包内的“顶层”声明

package foo	// 包名fun baz() { ... }
class Bar { ... }
  • 如果不使用可见性修饰符,则默认使用public,这意味着您的声明在任何地方都是可见的。
  • 如果您将声明标记为private,则它将仅在包含该声明的文件中可见。
  • 如果你将其标记为internal,它将在同一模块中的任何地方可见。
  • protected的修饰符不可用于顶级声明。

类成员

对于类成员

  • private 表示该成员仅在当前类内可见(包括其所有成员)。
  • protected表示该成员具有与private相同的可见性,但它还在子类中可见。
  • internal表示在此模块内任何能看到成员所在类的地方都可以看到该成员。
  • public表示任何能看到成员所在类的地方都可以看到该成员。

对于重写的成员,没有显式指定可见性,则重写成员也将具有与原始成员相同的可见性

构造函数

柱构造函数的可见性

class C private constructor(a: Int) { ... }

这里的构造函数是私有的。默认情况下,所有构造函数都是公共的,这实际上意味着它们在类可见的任何地方都是可见的(内部类的构造函数仅在同一模块中可见)

局部声明

局部变量、函数和类不能有可见性修饰符。

模块

internal可见性修饰符意味着成员在同一模块中是可见的。更具体地说,模块是一组编译在一起的kotlin文件,例如:

  • IntelliJ IDEA 模块。
  • Maven 项目。
  • Gradle源集(测试源集除外,它可以访问主源集的 internal 声明)。
  • 使用一次<kotlinc> Ant 任务调用编译的文件集。

这篇关于16:kotlin类和对象 -- 可见性修饰符(Visibility modifiers)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/436613

相关文章

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

kotlin的函数forEach示例详解

《kotlin的函数forEach示例详解》在Kotlin中,forEach是一个高阶函数,用于遍历集合中的每个元素并对其执行指定的操作,它的核心特点是简洁、函数式,适用于需要遍历集合且无需返回值的场... 目录一、基本用法1️⃣ 遍历集合2️⃣ 遍历数组3️⃣ 遍历 Map二、与 for 循环的区别三、高

kotlin中的数据转换方法(示例详解)

《kotlin中的数据转换方法(示例详解)》这篇文章介绍了Kotlin中将数字转换为字符串和字符串转换为数字的多种方法,包括使用`toString()`、字符串模板、格式化字符串、处理可空类型等,同时... 目录1. 直接使用 toString() 方法2. 字符串模板(自动转换)3. 格式化字符串(控制输

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Java实现将byte[]转换为File对象

《Java实现将byte[]转换为File对象》这篇文章将通过一个简单的例子为大家演示Java如何实现byte[]转换为File对象,并将其上传到外部服务器,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言1. 问题背景2. 环境准备3. 实现步骤3.1 从 URL 获取图片字节数据3.2 将字节数组

Javascript访问Promise对象返回值的操作方法

《Javascript访问Promise对象返回值的操作方法》这篇文章介绍了如何在JavaScript中使用Promise对象来处理异步操作,通过使用fetch()方法和Promise对象,我们可以从... 目录在Javascript中,什么是Promise1- then() 链式操作2- 在之后的代码中使

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C