Sag*_*age 29 public keyword kotlin
我是Kotlin的新手,我open
和public
关键词之间感到困惑.谁能告诉我这些关键词之间的区别?
s1m*_*nw1 35
该open
关键字的意思是"对扩展开放":
类的
open
注释与Java相反:它允许其他人继承此类.通过默认情况下,在科特林所有的类都是,这相当于有效的Java,项目17:继承设计文件,否则禁止它.final
final
您还需要明确要覆盖的方法,并标记为open
:
open class Base {
open fun v() {}
fun nv() {}
}
Run Code Online (Sandbox Code Playgroud)
该public
关键字作为一个可见性修饰符,可以在类的应用,功能等.注意,public
是默认的,如果没有其他明确规定:
如果未指定任何可见性修饰符,
public
则默认使用,这意味着您的声明将随处可见
class A { ... }
在Java中等于open class A { ... }
在Kotlin中。
final class B { ... }
在Java中等于class B { ...}
在Kotlin中。
与无关public
。
在Kotlin中,没有访问修饰符的所有内容都是public
默认设置。您可以public
在定义中明确指出,但在Kotlin中没有必要。
所以,
public class A { ... }
Run Code Online (Sandbox Code Playgroud)
和
class A { ... }
Run Code Online (Sandbox Code Playgroud)
在科特林都一样。
我放在这里只是为了我的备忘录,也许对其他人有用:
kotlin 中的open class 意味着一个类可以被继承,因为默认情况下它们不是:
class Car{....}
class Supercar:Car{....} : // give an error
open Car2{....}
class Supercar:Car2{....} : // ok
Run Code Online (Sandbox Code Playgroud)
Java中的公共类是关于类的可见性(与继承无关:除非Java中的类是final的,否则默认情况下可以继承)。在 kotlin 中,所有类默认都是公开的。
kotlin 中的open方法意味着该方法可以被覆盖,因为默认情况下它们不是。相反,在 Java 中,所有方法都可以默认覆盖
开放类的方法不能像往常一样默认覆盖(类是否开放无关紧要),必须声明它们可以被覆盖:
open class Car{
fun steering{...}
}
class Supercar:Car{
override fun steering {...} // give an error
}
open class Car2{
open fun steering{...}
}
class Supercar:Car2{
override fun steering {...} // ok
}
Run Code Online (Sandbox Code Playgroud)
更多详情:https : //kotlinlang.org/docs/reference/classes.html
小智 7
public:Kotlin 中的 public 关键字与 java 类似,用于使类、方法、变量可见,以便从任何地方访问。
open:在Kotlin中,所有类、函数和变量默认都是final的,并且通过继承属性,我们不能继承final类、final函数和数据成员的属性。因此,我们在类、函数或变量之前使用 open 关键字来使其可继承。
归档时间: |
|
查看次数: |
4118 次 |
最近记录: |