问题 Kotlin中'open'和'public'有什么区别?


我是Kotlin的新手,我很困惑 open 和 public 关键字。谁能告诉我这些关键词之间的区别?


4601
2018-02-28 07:35


起源



答案:


open 关键字表示“打开扩展名”:

open 注释  与Java相反 final:它允许其他人继承这个类。通过 默认,Kotlin的所有课程都是 final,对应于 有效的Java,第17项:继承的设计和文档,或者禁止它

您还需要明确表示要进行覆盖的方法,并标记为 open

open class Base {
    open fun v() {}
    fun nv() {}
}

public 关键字充当可见性修饰符,可应用于类,函数等。 注意 public 如果没有明确指定其他内容,则为默认值:

如果未指定任何可见性修饰符, public 默认情况下使用,这意味着您的声明将随处可见


12
2018-02-28 07:38



“您的声明随处可见”这句话的含义是什么? - Sagun Raj Lage
这是来自文档的引用,任何类都可以访问并可以创建实例: kotlinlang.org/docs/reference/visibility-modifiers.html - s1m0nw1
好的。现在我懂了。 “可见”是指“可访问”。和 public 使其可以从任何地方访问。 open 允许继承类。谢谢! - Sagun Raj Lage


答案:


open 关键字表示“打开扩展名”:

open 注释  与Java相反 final:它允许其他人继承这个类。通过 默认,Kotlin的所有课程都是 final,对应于 有效的Java,第17项:继承的设计和文档,或者禁止它

您还需要明确表示要进行覆盖的方法,并标记为 open

open class Base {
    open fun v() {}
    fun nv() {}
}

public 关键字充当可见性修饰符,可应用于类,函数等。 注意 public 如果没有明确指定其他内容,则为默认值:

如果未指定任何可见性修饰符, public 默认情况下使用,这意味着您的声明将随处可见


12
2018-02-28 07:38



“您的声明随处可见”这句话的含义是什么? - Sagun Raj Lage
这是来自文档的引用,任何类都可以访问并可以创建实例: kotlinlang.org/docs/reference/visibility-modifiers.html - s1m0nw1
好的。现在我懂了。 “可见”是指“可访问”。和 public 使其可以从任何地方访问。 open 允许继承类。谢谢! - Sagun Raj Lage


class A { ... } 在Java中等于 open class A { ... } 在科特林。
final class B { ... } 在Java中等于 class B { ...} 在科特林。

它与之无关 public

在Kotlin中,没有访问修饰符的一切都是 public 默认。你可以明确地说 public 在定义中,但在Kotlin中没有必要。

所以,

public class A { ... }

class A { ... }

在Kotlin是一样的。


2
2018-02-28 07:40



如果是这样,那么制作课程究竟是什么用途 public?如果你使用 open,你可以继承这个类。上课的主要目的是什么? public? - Sagun Raj Lage