接口是用於實現多態編程的重要組成部分
Kotlin與Java一樣,單繼承多實現,我們可以在接口中定義一些抽象方法,任何由具體的類去實現
創建Study接口,並添加幾個相關函數:
interface Study {
fun readBook()
fun doHomeWork()
}
讓Student去實現Study接口:
class Student(name: String, age: Int) : Person(name, age), Study {
override fun readBook() {
print("$name is reading")
}
override fun doHomeWork() {
print("$name is doing")
}
}
不同於Java中用extends和implements來完成繼承和實現,Kotlin中統一使用冒號,中間用逗號分隔
上述代碼表示Student繼承了Person類同時實現了Study接口,Study後面不需要加括號,因爲他沒有構造函數可去調用
Kotlin中使用override關鍵字來重寫或者實現父類的接口中的函數,並且允許對接口中定義的函數進行默認實現(jdk1.8之後也支持這個功能了)
函數的可見性修飾符
修飾符 | Java | Kotlin |
---|---|---|
public | 所有類可見 | 所有類可見(默認) |
private | 當前類可見 | 當前類可見 |
protected | 當前類、子類和同一包路徑下的類可見 | 當前類和子類可見 |
default | 同一包路徑下的類可見(默認) | 無 |
internal | 無 | 同一模塊中的類可見 |
Java中的可見性修飾符:public、protected、private和default(什麼都不寫)
Kotlin中的可見性修飾符:public、private、protected和internal
需要使用哪種修飾符時,直接定義在fun關鍵字前面即可
private作用相同
public作用相同,但是在Kotlin中是默認項
protected,Java:對當前類、子類和同一包路徑下的類可見,Kotlin:只對當前類和子類可見
internal:只對同一模塊中的類可見
歡迎關注這個不是技術號的公衆號,我們聊聊別的。