Kotlin可见性修饰符–公共,受保护,内部,私有
在本教程中,我们将讨论Kotlin编程中可用的各种Visibility Modifiers。
Kotlin可见性修饰符
可见性修饰符是将修饰符附加到Kotlin中的类/接口/属性/功能时,将定义在何处可见以及从何处可以访问所有内容。
Kotlin中的属性设置器可以具有与属性不同的修饰符。
吸气剂无法定义可见性修饰符。
它们使用与属性相同的修饰符。
以下是可见性修改器:
- public
- protected
- internal
- private
公共修饰符
公共修饰符是Kotlin中的默认修饰符。
就像Java公共修饰符一样,它意味着声明在任何地方都可见。
class Hello{
}
public class H{
}
fun hi()
public fun hello()
val i = 0
public val j = 5
以上所有声明均位于文件的顶层。
所有都是公开的。
如果我们不提及类成员的声明,则它们是公开的(除非它们被覆盖)。
保护修饰符
Kotlin中的保护修饰符:不能在顶级声明中设置。
在类中受保护的声明只能在其子类中访问。
open class Pr{
protected val i = 0
}
class Another : Pr{
fun iValue() : Int
{
return i
}
}
不是Pr的子类的类不能访问i
除非您明确更改,否则被覆盖的受保护声明在子类中将具有相同的protected修饰符。
open class Pr{
open protected val i = 0
}
class Another : Pr(){
fun iValue() : Int
{
return i
}
override val i = 5 //protected visibility
}
上面定义的Kotlin中的保护修饰符概念不同于Java中的概念。
内部修饰符
Internal是Kotlin中可用的新修饰符,而Java中没有。
将声明设置为内部意味着它只能在同一模块中使用。
所谓Kotlin中的模块,是指一组一起编译的文件。
internal class A {
}
internal val x = 0
这些将不会在当前模块之外显示。
当您需要向用户隐藏特定的库实现时,"内部修饰符"很有用。
使用Java中的程序包专用可见性是不可能的。
私有修饰符
私有修饰符不允许声明在当前作用域之外可见。
var setterVisibility: String = "abc"
private set
open class Pr{
open protected val i = 0
fun iValue() : Int
{
setterVisibility = 10
return setterVisibility
}
}
由于kotlin允许多个顶级定义,因此上述代码适用。
下面没有
private open class ABC{
private val x = 6
}
private class BDE : ABC()
{
fun getX()
{
return x //x cannot be accessed here.
}
}
x仅在其类内部可见。
我们可以通过以下方式设置私有构造函数:
class PRIV private constructor(a: String) {
...
}
默认情况下,类具有公共构造函数。
该类到其中去,构造函数都将遵循。
我们需要在定义本身的构造函数中设置可见性修饰符。
因此,Kotlin与Java不同地使用了protected和internal修饰符。
另外,Java的默认修饰符是package-private,而Kotlin尚不存在。

