Kotlin 面试题
目录

Kotlin 中 public, private, protected, internal 的区别是什么?

· 约 4 分钟读完 · 第 70 / 200 章

推荐答案

在 Kotlin 中,public、private、protected 和 internal 是四种不同的可见性修饰符,用于控制类、函数、属性等的访问范围。它们的区别如下:

  • public:默认的可见性修饰符。声明为 public 的成员可以在任何地方访问。
  • private:声明为 private 的成员只能在声明它的类或文件(顶层声明)中访问。
  • protected:声明为 protected 的成员可以在声明它的类及其子类中访问。
  • internal:声明为 internal 的成员可以在同一个模块(module)内的任何地方访问。

本题详细解读

public

public 是 Kotlin 中默认的可见性修饰符。如果你没有显式指定可见性修饰符,Kotlin 会默认使用 public。这意味着 public 成员可以在任何地方被访问,无论是在同一个模块内还是不同的模块中。

private

private 修饰符限制了成员的访问范围,只能在声明它的类或文件(顶层声明)中访问。对于类成员,private 成员只能在类内部访问;对于顶层声明(如函数、属性),private 成员只能在同一个文件中访问。

protected

protected 修饰符允许成员在声明它的类及其子类中访问。与 private 不同,protected 成员可以在子类中被访问,但不能在类的外部访问。

internal

internal 修饰符允许成员在同一个模块(module)内的任何地方访问。模块是指一起编译的一组 Kotlin 文件,例如一个 IntelliJ IDEA 模块或一个 Maven/Gradle 项目。internal 成员在模块外是不可见的。

总结

  • public:默认修饰符,任何地方可访问。
  • private:仅在声明类或文件内可访问。
  • protected:在声明类及其子类中可访问。
  • internal:在同一个模块内可访问。