发布网友
共1个回答
热心网友
接口
在 Kotlin 中,接口的声明默认都是 final 和 public 的,这与 Java 有所不同。Kotlin 中的接口与 Java 1.8 接口相似,可以包含抽象方法的定义和非抽象方法的实现。使用“:”代替了 Java 中的 extends 和 implements,Kotlin 是单继承的,但可以实现多个接口。实现接口时,可以继承该接口的方法并进行修改,当然也可以不实现该方法。如果分别继承两个接口,且两个接口有相同的默认实现函数,如果不显式指明调用哪一个,运行时会报错。解决方法是在函数中指明引用,例如 super< AInterface >.click(); super< BInterface >.click();,这在 Java 中的表达方式则为 AInterface .super.click();。
继承
在 Kotlin 中,方法默认都是 final 的,如果需要子类继承,需特地标记 open 修饰符。实现基类方法或接口方法默认是 open 的,若希望改变,可添加 final 修饰符。所有类默认超类为 Any,这对于没有超类型声明的类是默认超类。
抽象
理解 abstract 是关键,其他部分与 Java 的实现相似,这里不详细赘述。
重载函数
在 Kotlin 中,由于没有默认值参数的概念,需要在调用 Java 中的重载函数时显式指定所有参数值。为了解决这个问题,Kotlin 提供了 @JvmOverloads 注解,生成多个重载方法供 Java 调用。
修饰符
Kotlin 中的修饰符与 Java 的大多数类似,但默认为 public,没有包可见性。新增的修饰符为 internal,表示只在模块内部可用。在 Kotlin 中,public 无法访问 low visibility 的 internal,protected 访问范围在类或子类中,类的扩展函数无法访问 private 和 protected。
嵌套类与内部类
Kotlin 与 Java 一样,允许类中嵌套类,但内部类无法直接访问外部类的属性,除非做了特殊安排。添加 inner 关键字后,内部类可以获取到外部类的引用。
类
类是 Kotlin 中的重要组成部分。类声明由类名、类头和由花括号包围的类体构成,类头与类体可选。类可以有一个主构造函数以及一个或多个次构造函数。初始化代码可以放在 init 关键字作为前缀的初始化块中。次构造函数需要委托给主构造函数,委托方式为 this 关键字。如果类没有声明任何构造函数,程序会默认生成一个公有主构造函数,若不希望类有公有构造函数,则需声明一个带有非默认可见性的空的主构造函数。