33. 抽象类

作者: 写代码的向日葵 | 来源:发表于2019-10-02 15:52 被阅读0次

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

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

    相关文章

      网友评论

        本文标题:33. 抽象类

        本文链接:https://www.haomeiwen.com/subject/fqcrpctx.html