Android Kotlin 從0到1 之 類,函數(shù)的使用

閱讀本篇你可以收獲 Kotlin 類,函數(shù),以及擴(kuò)展函數(shù)的使用:

類定義:
接著上一篇的代碼開始創(chuàng)建一個類,跟java 中相同需要使用 class 關(guān)鍵字,同樣有一個默認(rèn)的構(gòu)造器

class Person{}

當(dāng)需要自定義構(gòu)造器時,構(gòu)造函數(shù)的函數(shù)體你可以寫在 init 塊中:

class Person(name:String,age:Int){
        init{
             // 構(gòu)造器的函數(shù)體  
        }
}

類繼承:
默認(rèn)任何類都是基礎(chǔ)繼承自 Any (與java中的 Object 類似)在 Kotlin 中所有的類默認(rèn)都是不可繼承的(final),所以我們只能繼承那些明確聲明 open 或者 abstract 的類,繼承的方式通過 ‘:’ 來實(shí)現(xiàn)

open class Animal(name: String)
class Person(name:String,age:Int) : Anumal(name)

上方的代碼可以看到,通過 open 設(shè)置類的權(quán)限,在Person 繼承時,直接使用了自身構(gòu)造器的 name 傳遞給了父構(gòu)造器,當(dāng)我們只有單個構(gòu)造器時,我們需要在從父類繼承下來的構(gòu)造器中指定需要的參數(shù)。這是用來替換Java中的 super 調(diào)用的。

類的調(diào)用:

 val p = Person()  // 不需要使用new關(guān)鍵字,直接類名() 就可以得到實(shí)例

函數(shù)(java 中的方法):
可以使用 fun 關(guān)鍵字定義

  fun  onCreate(){}

如果你沒有指定它的返回值,它就會返回 Unit ,與Java中的 void 類似,但
是 Unit 是一個真正的對象。你當(dāng)然也可以指定任何其它的返回類型:

fun onCreate() : Int {
      return 1
}

如果返回的結(jié)果可以使用一個表達(dá)式計算出來,你可以不使用括號而是使用等號:

fun onCreate() :Int = 1+3

我們還可以給參數(shù)指定一個默認(rèn)值使得它們變得可選

fun add(a:Int,b:Int = 10){ // 此處b的默認(rèn)值就為10 }

如你所見,第二個參數(shù)(b)指定了一個默認(rèn)值。這意味著你調(diào)用的時候可以傳入第二個值或者不傳,這樣可以避免你需要的重載函數(shù)


函數(shù)的重寫

  override fun add(){}

在重寫時添加關(guān)鍵字 override 并且被重寫的方法必須是 open/ abstract 修飾的,與類一樣函數(shù)默認(rèn)也是final

擴(kuò)展函數(shù)的使用:
Kotlin的擴(kuò)展函數(shù)功能使得我們可以為現(xiàn)有的類添加新的函數(shù),而不用修改原來的類。在使用前首先要配置一下Anko 類庫,在你的Gradle 中添加(sync Now):

compile 'org.jetbrains.anko:anko-sdk21:0.8.3'
compile 'org.jetbrains.anko:anko-support-v4:0.8.3'
compile 'org.jetbrains.anko:anko-appcompat-v7:0.8.3' 

我們現(xiàn)在為一個activity添加一個新函數(shù),用于顯示一個toast:

fun Activity.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT){
    Toast.makeText(this, message, duration).show()
}

聲明一個擴(kuò)展函數(shù)很簡單,只需要在函數(shù)名之前添加指定的類名即可。在調(diào)用時,該函數(shù)會以導(dǎo)入的方式添加到這個類中。并且我們可以在任何地方聲明擴(kuò)展函數(shù)比如在你的Util包中,定義完擴(kuò)展函數(shù)我們就可以在任何Activity,或其子類中使用該方法(我們例子中是為Activity添加的擴(kuò)展函數(shù),要注意擴(kuò)展函數(shù)并不是真正地修改了原來的類,它是以靜態(tài)導(dǎo)入的方式來實(shí)現(xiàn)的。它可以被聲明在任何文件中,因此有個通用的實(shí)踐是把一系列有關(guān)的函數(shù)放在一個新建的文件里) 調(diào)用也很簡單,在Activity中,跟調(diào)用普通方法一樣:

toast("這樣寫就能Toast")

所有的Kotlin文章都是在學(xué)習(xí)過程中的一個記錄,有不對的地方歡迎拍磚指正!!

下一篇:從API中獲取數(shù)據(jù),發(fā)起一次簡單請求?。?br> http://www.itdecent.cn/p/dabd77970e28

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容