kotlin學習筆記(二)
阿新 • • 發佈:2021-01-20
面向物件程式設計
類與物件
定義一個Person類並將其例項化。
class Person {
var name = ""
var age = 0
fun eat(){
println(name + " is eating. He is " + age + " years old.")
}
}
fun main(){
val p = Person()//kotlin例項化物件省去了關鍵詞new
p.name = "Tom"
p.age = 18
p.eat()
}
繼承與建構函式
首先有一點要清楚,kotlin中要想父類可以繼承,要在前面加上關鍵字open,這一點和Java不同。
第二點,繼承的關鍵字是 : ,寫法如下:
class Student:Person(){
var sno = ""
var grade = 0
}
因為Java和kotlin在繼承中都規定子類的建構函式都必須呼叫父類的建構函式,所以kotlin在繼承時通過父類的括號來指定呼叫哪一個建構函式。(Person的括號為空說明現在呼叫的是無參建構函式)
kotlin將建構函式分為主建構函式和次建構函式,主建構函式和Java中的一樣,函式名和類名相同;次建構函式則需要用關鍵字constructor
介面
第一,若實現介面的同時還有其他父類要繼承,則統一使用冒號,中間使用都好分開,而且介面的後面不用加括號:
interface Study {
fun readBook()
fun doHomework()
}
class Student:Person(),Study{
var sno = ""
var grade = 0
override fun readBook() {
println(name +" is reading.")
}
override fun doHomework() {
println(name + " is doing homework")
}
}
fun main(){
val student = Student()
student.name = "Tom"
student.age = 18
doStudy(student)
}
fun doStudy(study: Study){
study.readBook()
study.doHomework()
}
第二,kotlin還允許對介面中定義的函式預設實現:
interface Study {
fun readBook()
fun doHomework(){
println("do homework default implementation")
}
}
函式修飾符
Java中對函式有四種修飾符,分別是:public、private、protected和default。
kotlin中也有四種修飾符,分別是:public、private、protected和default。
區別:
修飾符 | Java | Kotlin |
---|---|---|
public | 所有類可見 | 所有類可見(預設) |
private | 當前類可見 | 當前類可見 |
protected | 當前類、子類、同一包路徑下的類可見 | 當前類、子類可見 |
default | 同一包路徑下的類可見(預設) | 無 |
internal | 無 | 同一模組中的類可見 |