Kotlin入門學習教程之可見性修飾符
更新時間:2021年11月11日 11:41:13 作者:冬天的毛毛雨
在Kotlin中,不管是類、接口、構造函數(shù)、函數(shù)、屬性及其設置器都具有可見性修飾符,下面這篇文章主要給大家介紹了關于Kotlin入門學習教程之可見性修飾符的相關資料,需要的朋友可以參考下
前言
在Kotlin中四種可見性修飾符:private、protected、internal、public,如果沒有顯示指定修飾符的話,默認可見性是public。
四種修飾符的說明
- public修飾符表示 公有 。此修飾符的范圍最大。當不聲明任何修飾符時,系統(tǒng)會默認使用此修飾符。
- internal修飾符表示 模塊 。對于模塊的范圍在下面會說明。
- protected修飾符表示 私有`+`子類。值得注意的是,此修飾符不能用于頂層聲明,在下面可以看到。
- private修飾符表示 私有 。此修飾符的范圍最小,即可見性范圍最低。
1、包場景下的可見性修飾符
package com.iflytek.basekotlin.`class` //函數(shù)、屬性、類、對象和接口都可以在頂層聲明,即直接在包內 2021/6/22 fun method(){} // 默認為public ,隨處可見 2021/6/22 private class ClassA(){} // 只在該文件內可見 2021/6/22 private val classA:ClassA = ClassA() // 此處只能用private,因為ClassA只在該文件內可見,所以其對象也是 2021/6/22 internal interface InterfaceA{} // 只在同模塊內可見 2021/6/22 protected var name:String = "" // 錯誤:Modifier 'protected' is not applicable to 'top level property without backing field or delegate' 2021/6/22
- 如果不指定任何可見性修飾符,默認為public,這意味著隨處可見
- 如果聲明為private,只在聲明的文件內可見
- 如果聲明為internal,只在相同的模塊內可見
- protected不適用于頂層聲明,即不適用于此場景
2、類內部聲明的成員
open class VisibilityDemo{ private val a = true // 只在該類內部可見 2021/6/22 protected val b = true // 在類內部和其子類中可見 2021/6/22 internal val c = true // 能見到類聲明的本模塊任何客戶端都可見 2021/6/22 val d = true // 能見到類聲明的任何客戶端都可見 2021/6/22 } class SubVisibility:VisibilityDemo(){ fun visible(){ //println(a) // 不可見 2021/6/22 println(b) // 可見 2021/6/22 println(c) // 可見 2021/6/22 println(d) // 可見 2021/6/22 } } class UnRelated(){ fun visible(visibilityDemo: VisibilityDemo){ // println(visibilityDemo.a) // 不可見 2021/6/22 // println(visibilityDemo.b) // 不可見 2021/6/22 println(visibilityDemo.c) // 可見 2021/6/22 println(visibilityDemo.d) // 可見 2021/6/22 } }
- private 只在類內部可見
- protected 在類及其子類中可見
- internal 能見到類聲明的本模塊內可見
- public 能見到類聲明處可見
總結
到此這篇關于Kotlin入門學習教程之可見性修飾符的文章就介紹到這了,更多相關Kotlin可見性修飾符內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
相關文章
Android編程使用緩存優(yōu)化ListView的方法
這篇文章主要介紹了Android編程使用緩存優(yōu)化ListView的方法,涉及ListView針對sd卡緩存及內存緩存的優(yōu)化技巧,需要的朋友可以參考下2015-12-12Kotlin對象的懶加載方式by?lazy?與?lateinit?異同詳解
這篇文章主要為大家介紹了Kotlin對象的懶加載方式by?lazy?與?lateinit?異同詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10Android Broadcast原理分析之registerReceiver詳解
這篇文章主要介紹了Android Broadcast原理分析之registerReceiver詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-08-08Android基于MLKit實現(xiàn)條形碼掃碼的代碼示例
這篇文章將借助開源庫?MLKit?實現(xiàn)條形碼掃描,對于商品條形碼也可以很好地識別成功,該庫的使用內容非常豐富,除了條碼識別,還有文字識別、圖像標記、人臉檢測等等,本文篇文章就只介紹最基本的條形碼掃描使用,需要的朋友可以參考下2023-08-08