Kotlin開發(fā)中open關鍵字與類名函數名和變量名的使用方法淺析
這篇文檔中,我們將解釋如何以及為什么將 open
關鍵字與類名、函數名和變量名一起使用。
我們都知道繼承(Inheritance)是每一種面向對象編程語言的支柱。 它是一個類的屬性和特征由另一個類派生或使用的過程。 簡單來說,如果一個名為 ClassA 的類有一些變量和函數,而另一個名為 ClassB 的類繼承了 ClassA,那么 ClassB 將使用 ClassA 的變量和方法。 在這里,ClassA 稱為父類,ClassB 稱為子類。 繼承使可重用性成為可能。
1 Kotlin open 在類名中的使用
在 Kotlin 中,要從另一個類繼承一個類,可以使用以下語法:
//Base Class open class MindOrks { } //Derived class class AndroidPro : MindOrks(){ }
在上面的示例中,我們從 AndroidPro
類繼承 MindOrks
類。 因此,MindOrks
是父類,AndroidPro
是子類。
在 Kotlin 中,默認情況下所有類都是 final 的,即默認情況下它們不能被繼承。這與我們在 Java 中學到的相反。在 Java 中,我們必須明確地使類設置為 final 才行。
所以,要使一個類可以被其他類繼承,我們在這里必須用 open 關鍵字標記它,否則會報錯:type is final so can’t be inherited
。
2 Kotlin open 在函數名中的使用
就像類一樣,Kotlin 中的所有函數在本質上默認也都是 final 的,也就是說,當函數本質上是 final 時,我們不能 override 一個函數。
函數的 override 是在子類中重新定義基類函數的過程。所以說,在父類的對應函數前需要加關鍵字 open
,與此同時,在子類中的這個函數前,我們必須使用 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") } }
這個示例中,MindOrks
父類有一個名為 courseName()
的函數,并且此 MindOrks
類由 AndroidPro
類繼承。 在 AndroidPro
類中,我們重寫了 courseName()
方法并重新定義了函數的主體。
3 Kotlin open 在變量名中的使用
就像類和函數一樣,Kotlin 中的變量在本質上默認是 final 的。 因此,要在子類中 override 它,我們需要在父類中將變量設置為 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
設置為 0,但在子類中,即 AndroidPro
類中,該值更改為 1。
一個簡單的總結:在 Kotlin 中,類、函數和變量在本質上都默認是 final 的,即它們不能從任何其他類繼承。 因此,為了使其可從其他類繼承,我們使用帶有類、函數和變量名的 open 關鍵字。
到此這篇關于Kotlin開發(fā)中open關鍵字與類名函數名和變量名的使用方法淺析的文章就介紹到這了,更多相關Kotlin open關鍵字內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android Drawerlayout側拉欄事件傳遞問題的解決方法
這篇文章主要為大家詳細介紹了Android Drawerlayout側拉欄事件傳遞問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11