kotlin 类的访问修饰符使用总结

在学习kotlin的过程总结了一下类的访问修饰符的用法,我把我的总结总结为一下几点

1. 默认定义声明的类是final的,这种类不能被集成重写,只能默认使用其成员。

例如

class Animated {

    var isAnimating:Boolean = false

    fun animate() {
    }
}

那么如果想要能让类产生子类我们需要将类标记为open,下面我们看一下标记open的类的情况

2. 标记定义的类为open

open class Animated {

    var isAnimating:Boolean = false

    fun animate() {

    }
}

只把类标记为open,类的成员不进行任何修饰,那么默认成员就是final的,如果使用这个类产生子类,所有的这个父类的成员都不可以被子类重写,那么我们如何让子类可以重写父类的成员呢,就需要我们将成员标记成open的,例如如下代码

open class Animated {

    open var isAnimating:Boolean = false

    open fun animate() {

    }
}

class BirdAnimation: Animated() {
    override var isAnimating:Boolean = false

    override fun animate() {
        super.animate()
    }
}

注意: 如果不显示的将类的成员标记为open子类就不能重写父类的成员,可以对不能被子类重写的成员不进行open标记从而保证父类的安全性。

3.类被标记为abstract

类被标记为abstract,那么这个抽象类中的抽象成员是必须被子类重写实现的,对于抽象类中非抽象函数默认不是open的,但是你可以标记为open的。

//抽象类默认就是open
abstract class Animal {

    abstract fun run() //这个必须被子类重写,默认就是open

    fun fly() {
        //这个默认是final默认不可以被子类重写
    }

    open fun jump() {
        //这个定义成open可以被子类重写
    }
}
0 0 投票数
文章评分
订阅评论
提醒
guest
1 评论
最旧
最新 最多投票
内联反馈
查看所有评论
京ICP备17066706号-1
1
0
希望看到您的想法,请您发表评论x