Kotlin開發(fā)中open關(guān)鍵字與類名函數(shù)名和變量名的使用方法淺析
這篇文檔中,我們將解釋如何以及為什么將 open
關(guān)鍵字與類名、函數(shù)名和變量名一起使用。
我們都知道繼承(Inheritance)是每一種面向?qū)ο缶幊陶Z(yǔ)言的支柱。 它是一個(gè)類的屬性和特征由另一個(gè)類派生或使用的過程。 簡(jiǎn)單來說,如果一個(gè)名為 ClassA 的類有一些變量和函數(shù),而另一個(gè)名為 ClassB 的類繼承了 ClassA,那么 ClassB 將使用 ClassA 的變量和方法。 在這里,ClassA 稱為父類,ClassB 稱為子類。 繼承使可重用性成為可能。
1 Kotlin open 在類名中的使用
在 Kotlin 中,要從另一個(gè)類繼承一個(gè)類,可以使用以下語(yǔ)法:
//Base Class open class MindOrks { } //Derived class class AndroidPro : MindOrks(){ }
在上面的示例中,我們從 AndroidPro
類繼承 MindOrks
類。 因此,MindOrks
是父類,AndroidPro
是子類。
在 Kotlin 中,默認(rèn)情況下所有類都是 final 的,即默認(rèn)情況下它們不能被繼承。這與我們?cè)?Java 中學(xué)到的相反。在 Java 中,我們必須明確地使類設(shè)置為 final 才行。
所以,要使一個(gè)類可以被其他類繼承,我們?cè)谶@里必須用 open 關(guān)鍵字標(biāo)記它,否則會(huì)報(bào)錯(cuò):type is final so can’t be inherited
。
2 Kotlin open 在函數(shù)名中的使用
就像類一樣,Kotlin 中的所有函數(shù)在本質(zhì)上默認(rèn)也都是 final 的,也就是說,當(dāng)函數(shù)本質(zhì)上是 final 時(shí),我們不能 override 一個(gè)函數(shù)。
函數(shù)的 override 是在子類中重新定義基類函數(shù)的過程。所以說,在父類的對(duì)應(yīng)函數(shù)前需要加關(guān)鍵字 open
,與此同時(shí),在子類中的這個(gè)函數(shù)前,我們必須使用 override 修飾符。
open class MindOrks { //use open keyword to allow child class to override it open fun courseName(){ println("Course Name") } } class AndroidPro : MindOrks(){ //use the override keyword to override the function override fun courseName() { println("Android for Professionals") } }
這個(gè)示例中,MindOrks
父類有一個(gè)名為 courseName()
的函數(shù),并且此 MindOrks
類由 AndroidPro
類繼承。 在 AndroidPro
類中,我們重寫了 courseName()
方法并重新定義了函數(shù)的主體。
3 Kotlin open 在變量名中的使用
就像類和函數(shù)一樣,Kotlin 中的變量在本質(zhì)上默認(rèn)是 final 的。 因此,要在子類中 override 它,我們需要在父類中將變量設(shè)置為 open
:
open class MindOrks { //use open keyword to allow child class to override it open val courseId: Int = 0 //use open keyword to allow child class to override it open fun courseName(){ println("Course Name") } } class AndroidPro : MindOrks(){ //use the override keyword to override the variable override val courseId: Int = 1 //use the override keyword to override the function override fun courseName() { println("Android for Professionals") } }
在上面的示例中,MindOrks
類中的 courseId
設(shè)置為 0,但在子類中,即 AndroidPro
類中,該值更改為 1。
一個(gè)簡(jiǎn)單的總結(jié):在 Kotlin 中,類、函數(shù)和變量在本質(zhì)上都默認(rèn)是 final 的,即它們不能從任何其他類繼承。 因此,為了使其可從其他類繼承,我們使用帶有類、函數(shù)和變量名的 open 關(guān)鍵字。
到此這篇關(guān)于Kotlin開發(fā)中open關(guān)鍵字與類名函數(shù)名和變量名的使用方法淺析的文章就介紹到這了,更多相關(guān)Kotlin open關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android實(shí)現(xiàn)手機(jī)拍照功能
這篇文章主要介紹了Android實(shí)現(xiàn)手機(jī)拍照功能,感興趣的小伙伴們可以參考一下2015-12-12Android自定義滑動(dòng)接聽電話控件組實(shí)例
這篇文章主要介紹了Android自定義滑動(dòng)接聽電話控件組,接聽電話可以左右滑動(dòng),感興趣的小伙伴們可以參考一下。2016-10-10Android Drawerlayout側(cè)拉欄事件傳遞問題的解決方法
這篇文章主要為大家詳細(xì)介紹了Android Drawerlayout側(cè)拉欄事件傳遞問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11Android 中SP與DP的區(qū)別實(shí)例詳解
這篇文章主要介紹了Android 中SP與DP的區(qū)別實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10Android通知欄前臺(tái)服務(wù)的實(shí)現(xiàn)
這篇文章主要介紹了Android通知欄前臺(tái)服務(wù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Flutter應(yīng)用程序?qū)崿F(xiàn)隱私屏幕示例解析
這篇文章主要為大家介紹了Flutter應(yīng)用程序?qū)崿F(xiàn)隱私屏幕示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09