1、声明
与Java一样,abstract 关键字用于在Kotlin中声明抽象类
类本身,或类中的部分成员,都可以声明为abstract的
2、用法
kotlin的抽象类用法基本与Java一样
下面用BaseActivity举例说明
3、抽象类
abstract class BaseActivity{
//......
}
4、抽象函数
abstract fun getLayoutId():Int
//抽象函数初始化View
abstract fun initView()
//抽象函数初始化数据
abstract fun initData()
//其他抽象函数
abstract fun initXXX()
5、抽象类的使用
抽象类使用 (:)进行继承
class MainActivity :BaseActivity(){
//......
}
使用关键字override进行覆盖抽象方法
override fun getLayoutId(): Int {
return 123456
}
override fun initView() {
println("initView is run")
}
override fun initData() {
println("initData is run")
}
override fun initXXX() {
println("initXXX is run")
}
6、完整代码
//抽象类
abstract class BaseActivity{
fun onCreate(){
setContentView(getLayoutId())
initView()
initData()
initXXX()
}
private fun setContentView(layoutId:Int){
println("当前加载的布局是layoutId=$layoutId")
}
//抽象函数
abstract fun getLayoutId():Int
//抽象函数初始化View
abstract fun initView()
//抽象函数初始化数据
abstract fun initData()
//其他抽象函数
abstract fun initXXX()
}
//抽象函数的使用
class MainActivity :BaseActivity(){
override fun getLayoutId(): Int {
return 123456
}
override fun initView() {
println("initView is run")
}
override fun initData() {
println("initData is run")
}
override fun initXXX() {
println("initXXX is run")
}
}
fun main() {
MainActivity().onCreate()
}
输出
当前加载的布局是layoutId=123456
initView is run
initData is run
initXXX is run