1.抽象类和实现类的定义如下:
/**
* 人类:抽象类不用open关键字
*/
abstract class Human {
/**
* 肤色
*/
open var color: String = "ajj"
/**
* 语言
*/
abstract var language: String
/**
*吃饭
*/
abstract fun eat()
}
//中国人
class ZhHuman : Human() {
override var color: String = "黄色"
override var language: String = "中文"
override fun eat() {
println("用筷子吃饭")
}
}
//美国人
class UsHuman : Human() {
override var color: String = "黑色"
override var language: String = "英语"
override fun eat() {
println("用刀叉吃饭")
}
}
//非洲人
class AfHuman : Human() {
override var color: String = "黑色"
override var language: String = "葡萄牙语"
override fun eat() {
println("用手吃饭")
}
}
2.调用
fun main(args: Array<String>) {
val zhHuman = ZhHuman()
val usHuman = UsHuman()
val afHuman = AfHuman()
println(zhHuman, usHuman, afHuman)
}
fun println(vararg human: Human) {
human.forEach {
println(it.color)
println(it.language)
it.eat()
}
}
- 抽象类的类前面不用加open关键字
- 抽象类中可以没有抽象方法
- 如果想要重写抽象类中的非抽象方法,则需要在抽象类的非抽象方法和属性前面加上open关键字
3.抽象类总结
- 抽象类可以继承抽象类
- 抽象类反应的是事物的本质,只能单继承
网友评论