Kotlin類的繼承實(shí)現(xiàn)詳細(xì)介紹
1.在kotlin中,默認(rèn)類都是封閉的closed的。如果要讓某個類開放繼承,必須用open關(guān)鍵字修飾
類中的方法默認(rèn)也是關(guān)閉的。如果需要子類復(fù)寫父類的方法,也必須用open修飾。
1)定義父類,用open將類繼承打開。用open將函數(shù)的復(fù)寫打開。
//父類必須用open修飾,才能夠被繼承
open class Person(val name:String) {
var age = 0
//父類定義的函數(shù),必須有open修飾,子類才能復(fù)寫
open fun doWork(){
println("do nothing")
}
}2)定義子類。屬性是不需要open字段修飾的。子類默認(rèn)繼承父類的屬性
class Student(name: String) : Person(name) {
override fun doWork() {
println("do homework")
}
}
fun main() {
val student = Student("HanMei")
student.age = 20
println(student.name)
println(student.age)
student.doWork()
}2.kotlin中通過is關(guān)鍵字來檢查某個對象的類型。
val student = Student("HanMei")
println(student is Student)
println(student is Person)
println(student is Any)Java中用 instanceof 來檢查某個對象的類型。
Student student = new Student();
System.out.println(student instanceof Student);
System.out.println(student instanceof Person);3.在kotlin中存在一個超類Any。所有的類都他的子類。就向Java中的Object超類一樣。
Any類中也定義了和Object一樣的方法。但是在Any中都是空實(shí)現(xiàn)。真正的實(shí)現(xiàn)是由kotlin編譯器完成的。
public open class Any {
public open operator fun equals(other: Any?): Boolean
public open fun hashCode(): Int
public open fun toString(): String
}在定義的子類中,可以復(fù)寫這些方法
class Student(name: String) : Person(name) {
override fun doWork() {
println("do homework")
}
override fun toString(): String {
return "name:$name age:$age"
}
override fun hashCode(): Int {
return super.hashCode()
}
override fun equals(other: Any?): Boolean {
return super.equals(other)
}
}4.as是一個類型轉(zhuǎn)換操作符??梢詫⒆宇愵愋娃D(zhuǎn)換成父類、抽象類接口。
定義一個方法,接收父類類型。
fun sayHello(p: Person) {
println("Hello," + p.name)
}由于類的多態(tài),我們可以直接把子類類型賦值給父類類型。
也可以通過as字段轉(zhuǎn)換成父類類型,通常我們不這樣做。
val student = Student("HanMei")
sayHello(student)
sayHello((student as Person))
到此這篇關(guān)于Kotlin類的繼承實(shí)現(xiàn)詳細(xì)介紹的文章就介紹到這了,更多相關(guān)Kotlin類的繼承內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android實(shí)現(xiàn)頂部導(dǎo)航欄可點(diǎn)擊可滑動效果(仿微信仿豆瓣網(wǎng))
這篇文章主要介紹了 Android實(shí)現(xiàn)頂部導(dǎo)航欄可點(diǎn)擊可滑動效果(仿微信仿豆瓣網(wǎng)),非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03
Android實(shí)現(xiàn)微信側(cè)滑刪除當(dāng)前頁面
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)微信側(cè)滑刪除當(dāng)前頁面,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
RecyclerView中使用CheckBox出現(xiàn)勾選混亂的解決方法
這篇文章主要為大家詳細(xì)介紹了RecyclerView中使用CheckBox出現(xiàn)勾選混亂的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Android實(shí)現(xiàn)手機(jī)振動設(shè)置的方法
這篇文章主要介紹了Android實(shí)現(xiàn)手機(jī)振動設(shè)置的方法,涉及Android頁面布局、屬性及功能設(shè)置的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09
Android利用MediaRecorder實(shí)現(xiàn)錄音功能
這篇文章主要為大家詳細(xì)介紹了Android利用MediaRecorder實(shí)現(xiàn)錄音功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
Android studio保存logcat日志到本地的操作
這篇文章主要介紹了Android studio保存logcat日志到本地的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Android 7.0 手電筒控制實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Android 7.0 手電筒控制實(shí)現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09

