在 Kotlin 中所有类都有一个共同的超类Any,这对于没有超类型声明的类是默认超类:
class Example // 从 Any 隐式继承Any 有三个方法:equals()、 hashCode() 与 toString()。因此,为所有 Kotlin 类都定义了这些方法。 这点和java相似,所有类都继承自object,kotlin是所有的类都来自any
在默认情况下kotlin都是(final)的,不能够被继承,如果想允许被继承,需要使用open关键字标记
open class Base // 该类开放继承如需声明一个显式的超类型,请在类头中把超类型放到冒号之后:
open class Base(p: Int) class Derived(p: Int) : Base(p)如果子类有主构造函数, 则基类必须在主构造函数中立即初始化。
在子类的主构造函数初始化基类的主构造函数
open class Base(s: String) class NetworkConfig : Base("xx") //or open class Base(s: String) class NetworkConfig(ss: String) : Base(ss) {在子类的主构造函数初始化基类的次级构造函数(有多个次级构造,只需要选一个)
open class Base { var agent1 = 0 constructor(ag: Int, name: String) : this(name) { Log.e("TAG", "Base") agent1 = ag } } class NetworkConfig(ss: String) : Base(0,ss) {如果子类没有主构造函数,则必须在每一个二级构造函数中用super关键字初始化基类,或者在代理另一个构造函数。初始化基类时,可以调用基类的不同构造方法。
在子类的次级构造函数中super基类的主构造
open class Base(s: String) { var agent1 = 0 } class NetworkConfig: Base { var old: Double? = null constructor(old: Double, ag: Int, name: String) : super(name) { this.old = old } }