Kotlin 抽象与接口
其实在 Kotlin 中继承、接口大部分和 Java 是一样的,但是在语法层面支持是不一样。因为 Kotlin 会有一层语法糖可以很方便高效地声明某个语法,从而让你把更多精力专注在业务逻辑上,而不是语法代码模板上。然后我们还会一起来聊下 Kotlin 多继承的实现,Kotlin 和 Java 一样都是单继承,这一点是毋庸置疑的,但是我们也会需要多继承场景,那么 Kotlin 是怎么解决这样场景的呢?大家肯定想到的是接口多继承,具体怎么一起来看看吧。
1. 抽象与接口
与 Java 一样的是 Kotlin 也是使用 abstract
和 interface
来分别声明抽象类和接口,除此之外 Kotlin 的接口内部还支持非抽象方法的实现 (这一点和 Java8 中 default 方法很类似),但是需要注意内部不能包含任何的状态 (纯函数的形式)。
1.1 抽象类声明
在 Kotlin 中抽象类的声明使用 abstract
关键字,抽象类中方法使用 abstract
声明抽象方法。
//以Random.kt源码为例
public abstract class Random {//使用abstract关键声明一个抽象类Random
public abstract fun nextBits(bitCount: Int): Int //与Java一样使用abstract声明一个抽象类中抽象方法,所以子类必须要实现该方法
public open fun nextInt(): Int = nextBits(32)//open表示这个类可以被子类重写
public fun ne