Kotlin類的繼承實(shí)現(xiàn)詳細(xì)介紹
1.在kotlin中,默認(rèn)類都是封閉的closed的。如果要讓某個(gè)類開放繼承,必須用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)鍵字來檢查某個(gè)對象的類型。
val student = Student("HanMei")
println(student is Student)
println(student is Person)
println(student is Any)Java中用 instanceof 來檢查某個(gè)對象的類型。
Student student = new Student();
System.out.println(student instanceof Student);
System.out.println(student instanceof Person);3.在kotlin中存在一個(gè)超類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是一個(gè)類型轉(zhuǎn)換操作符??梢詫⒆宇愵愋娃D(zhuǎn)換成父類、抽象類接口。
定義一個(gè)方法,接收父類類型。
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)文章
Androd 勇闖高階性能優(yōu)化之布局優(yōu)化篇
Android性能優(yōu)化方面也有很多文章了,這里就做一個(gè)總結(jié),從原理到方法,工具等做一個(gè)簡單的了解,從而可以慢慢地改變編碼風(fēng)格,從而提高性能2021-10-10
Android變形(Transform)之Camera使用介紹
Camera主要實(shí)現(xiàn)3D的變形,有轉(zhuǎn)動(dòng),旋轉(zhuǎn)等,Camera的源碼是由Native(本地代碼)實(shí)現(xiàn),提供的接口也比較簡單,感興趣的朋友可以參考下,或許對你學(xué)習(xí)有所幫助2013-02-02
Jsoup 抓取頁面的數(shù)據(jù)實(shí)例詳解
這篇文章主要介紹了Jsoup 抓取頁面的數(shù)據(jù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2016-12-12
Flutter進(jìn)階之實(shí)現(xiàn)動(dòng)畫效果(三)
這篇文章主要為大家詳細(xì)介紹了Flutter進(jìn)階之實(shí)現(xiàn)動(dòng)畫效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
Android開發(fā)使用Drawable繪制圓角與圓形圖案功能示例
這篇文章主要介紹了Android開發(fā)使用Drawable繪制圓角與圓形圖案功能,結(jié)合具體實(shí)例形式分析了Drawable繪制圓角矩形的實(shí)現(xiàn)步驟與使用方法,需要的朋友可以參考下2017-10-10

