我是Kotlin的新手,我在open
和public
关键词之间感到困惑。谁能告诉我这些关键词之间的区别?
open
关键字的意思是“开放扩展”:
类的
open
注释与Java的final
相反:它允许其他人继承此类。默认情况下,Kotlin中的所有类都是final
,它对应于Effective Java,第17项:继承的设计和文档,或者禁止它。
您还需要明确表示要进行覆盖的方法,并使用open
标记:
open class Base {
open fun v() {}
fun nv() {}
}
public
关键字充当可见性修饰符,可应用于类,函数等。请注意,如果没有明确指定其他内容,则public
是默认值:
如果您未指定任何可见性修饰符,则默认使用
public
,这意味着您的声明将随处可见
Java中的class A { ... }
等于Kotlin中的open class A { ... }
。
Java中的final class B { ... }
等于Kotlin中的class B { ...}
。
它与public
无关。
在Kotlin中,默认情况下,没有访问修饰符的所有内容都是public
。您可以在定义中明确说明public
,但在Kotlin中没有必要。
所以,
public class A { ... }
和
class A { ... }
在科特林是一样的。
open与java中的Final相反。如果该类不是“打开”,则不能继承。
class First{}
class Second:First(){} // Not allowed. Since 'First' is private by default.
不要对公开和公开感到困惑。 public是一个可见性修饰符
class Third{} // By default this is public
private class Fourth{}
class Fifth{
val third = Third() // No issues
val fourth = Fourth() // Can't access because Fourth is private
}