Kotlin 中的私有可见性修改器和受保护可见性修饰符有什么区别?



我刚开始学习 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的项目在同一文件中可见

最新更新