33. 抽象类

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) {
    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.抽象类总结

  • 抽象类可以继承抽象类
  • 抽象类反应的是事物的本质,只能单继承

你可能感兴趣的:(33. 抽象类)