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尚不存在。