kotlin类与对象——>可见性修饰符
1.在 Kotlin 中有这四个可⻅性修饰符:private 、protected 、internal 和public 。如果没有显式指定修饰符的话,默认可⻅性是 public 。
2.包,函数、属性和类、对象和接口可以在顶层声明,即直接在包内
// 文件名:example.kt
package foo fun baz() { ...... }
class Bar { ...... } //— 如果你不指定任何可⻅性修饰符,默认为 public,这意味着你的声明将随处可⻅;
//— 如果你声明为 private,它只会在声明它的文件内可⻅;
//— 如果你声明为 internal,它会在相同模块内随处可⻅;
//— protected 不适用于顶层声明。 //注意:要使用另一包中可⻅的顶层声明,仍需将其导入进来。 例如:
// 文件名:example.kt package foo
private fun foo() {
......
} // 在 example.kt 内可⻅ public var bar: Int = 5 // 该属性随处可⻅
private set // setter 只在 example.kt 内可⻅
internal val baz = 6 // 相同模块内可⻅
3.类和接口,对于类内部声明的成员:
//— private意味着只在这个类内部(包含其所有成员)可⻅;
//— protected ⸺ 和 private 一样 + 在子类中可⻅。
//— internal ⸺ 能⻅到类声明的 本模块内 的任何客戶端都可⻅其 internal 成员;
//— public ⸺ 能⻅到类声明的任何客戶端都可⻅其 public 成员。
//请注意在 Kotlin 中,外部类不能访问内部类的 private 成员。
//如果你覆盖一个 protected 成员并且没有显式指定其可⻅性,该成员还会是 protected 可⻅性。 例子: open class Outer {
private val a = 1
protected open val b = 2
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.c 和 o.d 可⻅(相同模块)
// Outer.Nested 不可⻅,Nested::e 也不可⻅
}
4.构造函数,要指定一个类的的主构造函数的可⻅性,使用以下语法(注意你需要添加一个显式constructor关键字)
class C private constructor(a: Int) { ...... }
//这里的构造函数是私有的。默认情况下,所有构造函数都是 public,这实际上等于类可⻅的地方它就可⻅(即 一个 internal 类的构造函数只能在相同模块内可⻅)
5.局部声明,局部变量、函数和类不能有可⻅性修饰符。
6.模块,可⻅性修饰符 internal 意味着该成员只在相同模块内可⻅。更具体地说,一个模块是编译在一起的 一套 Kotlin 文件
//— 一个IntelliJIDEA模块;
//— 一个Maven项目;
// 一个 Gradle 源集(例外是 test 源集可以访问 main 的 internal 声明);
//— 一次 <kotlinc> Ant 任务执行所编译的一套文件。
kotlin类与对象——>可见性修饰符的更多相关文章
- Java自学-类和对象 访问修饰符
Java的四种访问修饰符 成员变量有四种修饰符 private 私有的 package/friendly/default 不写 protected 受保护的 public 公共的 比如public 表 ...
- Kotlin——中级篇(三):可见性修饰符详解
在Kotlin中,不管是类,对象,接口,构造函数,函数,属性及其设置器都具有可见性修饰符.Kotlin中的可见性修饰符共四种.即public.protected.private.internal.在不 ...
- Koltin——最详细的可见性修饰符详解
在Kotlin中,不管是类,对象,接口,构造函数,函数,属性及其设置器都具有可见性修饰符.Kotlin中的可见性修饰符共四种.即public.protected.private.internal.在不 ...
- Kotlin 类和对象
类定义 Kotlin 类可以包含:构造函数和初始化代码块.函数.属性.内部类.对象声明. Kotlin 中使用关键字 class 声明类,后面紧跟类名: class Runoob { // 类名为 R ...
- java成神之——ImmutableClass,null检查,字符编码,defaultLogger,可变参数,JavaScriptEngine,2D图,类单例,克隆,修饰符基本操作
ImmutableClass null检查 字符编码 default logger 函数可变参数 Nashorn JavaScript engine 执行脚本文件 改变js文件输出流 全局变量 2D图 ...
- kotlin -- 可见性修饰符
puiblic Kotlin的可见修饰符与Java类似,但是默认可见性不同,Java默认包私有,kotlin默认public ### internal internal 只在模块内部可见.一个模块就是 ...
- JavaScript 正则表达式——对象,修饰符,元字符,字符类,范围类
㈠RegExp 对象 ⑴JavaScript通过内置对象RegExp支持正则表达式 ⑵有两种方法实例化RegExp对象 ①字面量 ②构造函数 ⑶字面量示例 示例1: 你会发 ...
- C#学习笔记06--类/对象/访问修饰符/方法
编程思想 1.面向过程 面向过程是要把问题解决的过程分成有一定顺序的不同步骤, 然后按照步骤一步步的将问题解决. 2.面向对象 面向对象解决问题的思路是先分析问题中所涉及的对象, 然后 ...
- C#类和成员的修饰符
C#中public.private.protected.internal.protected internal & (2010-09-22 13:33:45)转载 标签: 杂谈 分类: C# ...
- 【Java基础】Java类及成员和修饰符的关系
修饰符的分类 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 抽象修饰符:abstract 类的修饰符 权限修饰符:默认修饰符,public ...
随机推荐
- 【转载】 MPP大规模并行处理架构详解
本文来自博客园,作者:五分钟学大数据 原文链接:https://www.cnblogs.com/itlz/p/14998858.html =============================== ...
- C# 遇见System.Net.Http不兼容的解决方案
背景 假设我有一个项目A,调用B项目里面的HttpClient.A里面的System.Net.Http引用路径为(版本4.0.0.0) C:\Program Files (x86)\Reference ...
- MySQL 5.7 DDL 与 GH-OST 对比分析
作者:来自 vivo 互联网存储研发团队- Xia Qianyong 本文首先介绍MySQL 5.7 DDL以及GH-OST的原理,然后从效率.空间占用.锁阻塞.binlog日志产生量.主备延时等方面 ...
- 如何用python做一个简单的小游戏 Pygame
当然可以!下面是一个简单的Python游戏开发教程,帮助你入门: 安装Pygame库 Pygame是一个Python游戏开发库,可以帮助你创建游戏窗口.绘制图形.处理用户输入等.你可以使用以下命令在命 ...
- 10W数据量导入与现有表数据去重
使用的是PostgreSQL 在做大数据量(十万级)导入时,某些字段和数据库表里数据(千万级)重复的需要排除掉,把表数据查询出来用程序的方式判断去重效率很低,于是考虑用临时表. 先把新数据插入到临时表 ...
- Linux-centos中修改默认root帐户的登录用户名
vi /etc/passwd 按i键进入编辑状态 修改第1行第1个root为新的用户名 按esc键退出编辑状态,并输入:x保存并退出 vi /etc/shadow 按i键进入编辑状态 修改第1行第1个 ...
- MFC添加图标到托盘
MFC窗口实现最小化到托盘 右键菜单和还原 //.h文件 void toTray();//最小化到托盘 void DeleteTray();//删除托盘图标 afx_msg LRESULT OnSho ...
- java_基本类型
1. 所有的基本类型都是小写 例如 int 2. 所有的类 类型首字母大写 例如String
- 使用 iRingo 解锁本该属于你的苹果服务
为什么别人的 Spotlight 可以通过航班号查询航班信息,而我的不行?为什么别人的 Spotlight 可以直接看英超联赛的比分信息?为什么我的 Apple News 打不开?这其实是因为这些功能 ...
- JVM学习笔记之栈区
JVM学习笔记之栈区 本文主要内容: 栈是什么?栈帧又是什么?在JVM中,main方法调用say方法后,是怎么运行的?本文将详细讲解栈.希望大家学了之后,对栈有更深的了解. 心法:在JVM中,栈管运行 ...