我刚开始学习 kotlin 并对受保护的访问修饰符感到困惑,我的疑问是 Kotlin 中的私有和受保护访问修饰符之间的确切区别是什么。我在谷歌上搜索过,但没有得到任何满意的答案。
与大多数 OOP 语言一样,Kotlin 中有几个修饰符:
public
- 类、函数或属性可以从项目中的任何位置访问。 在 Kotlin 中,类、属性或函数默认是公共的
protected
- 类、函数或属性只能由当前类子类访问
private
- 只能在当前类中访问类、函数或属性
internal
- 可以从当前模块中的任何位置访问类、函数或属性
正如官方文件所说:
private
表示仅在此类中可见(包括其所有 成员(;
protected
— 与子类中的private
+ 可见相同;
来自 Kotlin 文档:
private — 表示仅在此类中可见(包括其所有成员(;
受保护 — 与私有相同 + 在子类中也可见;
通过可见,这意味着可以访问或使用字段或方法。
查看此内容以获取详细说明。
如果你想理解受保护的概念,你需要对子类和继承有一个基本的了解。
可以从子类中看到具有受保护访问说明符的变量或函数。但是私有意志将范围绑定在类内。
考虑以下基本代码:
open class Outer {
private val a = 1 // visible only for instance of class Outer
protected open val b = 2 // visible for instance of Outer and another subclass which inherits Outer.
val d = 4 // public by default
protected class Nested {
public val e: Int = 5
}
}
public class Subclass : Outer() {
// a is not visible
// b, d are visible
// Nested and e are visible
override val b = 5 // 'b' is protected
}
注意:上面的代码来自文档。
因为它与类成员有关:
- 标记为
protected
的项目在类和子类中可见 - 标记为
private
的项目在类中可见
由于与顶级声明有关:
- (
protected
不适用( - 标记为
private
的项目在同一文件中可见