【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q
在 Kotlin 程式語言中,定義抽象類別需要在「class」關鍵字前面加上「abstract」關鍵字。在抽象類別內,若方法是抽象的,需在「fun」前面加上「abstract」。值得留意的是,抽象類別無法直接被實體化,只能被其他類別繼承並實作其中的抽象方法。
在這個範例中,定義了一個抽象類別 MyAbstractClass
,裡面包含一個抽象方法 myFun()
,這個方法沒有具體的內容,只有方法名稱和定義。
abstract class MyAbstractClass {
abstract fun myFun()
}
接著,程式碼定義了一個繼承自 MyAbstractClass
的類別 MyClass
,它必須實作 MyAbstractClass
中的抽象方法 myFun()
。在這個範例中,MyClass
類別覆寫了 myFun()
方法,並在其中印出了 "myFun" 的訊息。
class MyClass : MyAbstractClass() {
override fun myFun() {
println("myFun")
}
}
最後,在 main()
函式中建立了 MyClass
的實例,並呼叫了 myFun()
方法。這將會執行 MyClass
中所覆寫的 myFun()
方法,印出 "myFun" 的訊息。
fun main() {
MyClass().myFun() //myFun
}
在 Android 應用程式中,抽象類別 (Abstract) 在資料列表 RecyclerView 的 Adapter 中被廣泛運用。
public abstract static class Adapter<VH extends ViewHolder> {
...
...
...
@NonNull
public abstract VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType);
public abstract void onBindViewHolder(@NonNull VH holder, int position);
public int getItemViewType(int position) {
return 0;
}
...
...
...
}
這個抽象類別提供了必要的框架供開發者建立自訂的 Adapter。在它裡面,onCreateViewHolder
方法負責建立並回傳 ViewHolder,onBindViewHolder
方法則負責綁定資料到特定的 ViewHolder 上。透過繼承這個抽象類別,可以輕鬆地建立符合個別需求的 Adapter。