Kotlin教程:可见性修饰符及示例

2023年 7月 12日 49.3k 0

Kotlin中的可见性修饰符是用于限制应用程序中的类,接口,方法和属性使用的关键字。 这些修饰符用于多个位置,例如:类声明或方法体。

在Kotlin中,可见性修饰符分为四种不同的类型:

  • public
  • protected
  • internal
  • private

1. public 修饰符

可以从项目的任何位置访问public修饰符。 它是Kotlin中的默认修饰符。 如果没有使用任何访问修饰符指定任何类,接口等,则在public范围中使用。

public class Example{
}
class Demo{
}
public fun hello()
fun demo()
public val x = 5
val y = 10

Kotlin

所有public声明都可以放在文件的顶部。 如果未指定类的成员,则默认为public

2. protected 修饰符

类或接口使用protected修饰符仅允许对其类或子类进行可见性。 除非明确更改,否则子类中的protected声明在被重写时也是protected修饰符。

open class Base{  
    protected val i = 0  
}  

class Derived : Base(){  

    fun getValue() : Int  
    {  
        return i  
    }  
}

Kotlin

在Kotlin中,protected修饰符不能在顶层声明。

覆盖protected的类型

open class Base{  
  open protected val i = 5  
}  
class Another : Base(){  
    fun getValue() : Int  
    {  
        return i  
    }  
    override val i =10  
}

Kotlin

3. internal 修饰符

internal修饰符是在Kotlin中新添加的,它在Java中不可用。 声明要将字段标记为internal字段。internal修饰符使字段仅在实现它的模块内可见。

internal class Example{  
    internal val x = 5  
    internal fun getValue(){  

    }  
}  
internal val y = 10

Kotlin

在上面,所有字段都声明为internal,只能在实现它们的模块内部访问。

4. private 修饰符

private修饰符允许声明仅在声明属性,字段等的块内可访问。 private修饰符声明不允许访问范围外部。可以在该特定文件中访问私有包。

private class Example {  
    private val x = 1  
     private valdoSomething() {  
    }  
}

Kotlin

在上面的类示例中,val x和函数doSomthing()声明为private。 可以从同一个源文件访问类Example,可以在Example类中访问val xfun doSomthing()

可见性修饰符示例

open class Base() {
    var a = 1 // 默认为 public 
    private var b = 2 // 基类 private 
    protected open val c = 3  // Base和Derived类可见
    internal val d = 4 // 在同一个模块中可见
    protected fun e() { } // Base和Derived类可见
}

class Derived: Base() {
    // a, c, d, 和 e() 基类可见
    // b 是不可见
    override val c = 9 // c 为 protected
}

fun main(args: Array) {
    val base = Base()
    // base.a 和 base.d 可见
    // base.b, base.c 和 base.e() 不可见
    val derived = Derived()
    // derived.c 不可见
}

//原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/kotlin/kotlin-visibility-modifier.html#article-start

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论