1. 程式人生 > 其它 >kotlin學習筆記(二)

kotlin學習筆記(二)

技術標籤:androidkotlin

面向物件程式設計

類與物件

定義一個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中對函式有四種修飾符,分別是:publicprivateprotecteddefault
kotlin中也有四種修飾符,分別是:publicprivateprotecteddefault
區別:

修飾符JavaKotlin
public所有類可見所有類可見(預設)
private當前類可見當前類可見
protected當前類、子類、同一包路徑下的類可見當前類、子類可見
default同一包路徑下的類可見(預設)
internal同一模組中的類可見