美文网首页
Kotlin抽象类与接口

Kotlin抽象类与接口

作者: ZoranLee | 来源:发表于2021-11-19 16:59 被阅读0次

    抽象类表示“is-a”的关系,而接口所代表的是“has-a”的关系。

    抽象类与抽象成员

    抽象是相对于具象而言的。

    image.png
    abstract class Shape {
        abstract var width: Double
        abstract var height: Double
        abstract fun area(): Double
    }
    
    class Rectangle(override var width: Double, override var height: Double) : Shape() {
    
        private val name: String? = null
    
        override fun area(): Double {
            return PI * width * height
        }
    
        companion object {
            const val PI = 3.14
        }
    }
    
    
    • 能够继承父类的public和protected成员变量;
    • 不能继承父类的private成员变量;
    • 对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能继承;
    • 对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中的同名成员变量,需要使用super关键字进行引用

    接口

    接口是一种比抽象类更加抽象的“类”
    接口本身代表的是一种“类型”的概念。
    接口是用来建立类与类之间的协议

    Kotlin与Java一样,继承只能存在一个父类(单继承)

    
    interface ProjectPrivate {
        val name: String
        val owner: String
        fun save(project: Project)
    
        fun print() {
    //        println()
        }
    }
    
    class ProjectPrivateImpl(override val name: String, override val owner: String) : ProjectPrivate {
        override fun save(project: Project) {
    
        }
    }
    

    相关文章

      网友评论

          本文标题:Kotlin抽象类与接口

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