1.如果 你分别继承两个 接口,两个接口有相同的默认实现函数,如果不显式的指明调用哪一个,运行的时候会报错。 2.解决办法就是 实现两个接口中相同名称的函数,在函数中指明引用, 2.1 super< AInterface >.click(); super< BInterface >.click(); 而在java中的表达方式则是 AInterface .super.click(); 表现方式不太一样
2. 继承
2.1 继承函数
java 中的父类默认都是 可以继承的,所以我们在写 BaseActivity 或者 BaseFragment 的时候都要慎重的设计,因为一不小心 就会让子类实现很多没有的类。所以 kotlin中 的方法默认都是 final ,如果需要子类继承就要特地标记 open 修饰符。
class MeButton : Clicker{
override fun click() { // 实现 Clicker 方法 默认 为open 可继承
println(“not implemented”)
}
fun dieable(){} // 默认为 final
open fun openClass(){} // 明确表明 为open 可继承
}
如果是实现 基类的方法 或者 接口的方法,默认是open 的,如果希望改变,可以自己添加修饰符 final 。
Kotlin 中所有类都有一个共同的超类 Any,这对于没有超类型声明的类是默认超类
2.2 继承属性
继承属性和继承函数差不多,在父类中声明然