接口定义
kotlin和Java中的接口定义类似:
interface Study {
fun doHomework()
fun readBooks()
}
接口实现
Student中实现Study接口,需要实现Study中声明的全部未实现函数。
class Student(name: String, age: Int) : Person(name, age), Study{
override fun doHomework() {
println("$name is doing homework")
}
override fun readBooks() {
println("$name is reading homework")
}
}
如下为接口多态使用:
fun main() {
val student = Student("lucy", 19)
//student.doHomework()
study(student)
}
fun study(study: Study) {
study.doHomework()
}
//结果:lucy is doing homework
接口函数实现
Kotlin允许对接口中定义的函数进行默认实现。
interface Study {
fun doHomework(){
println("do homework default implementation")
}
fun readBooks()
}
由于doHomework有默认实现,接口实现类不会再强制要求实现,
class Student(name: String, age: Int) : Person(name, age), Study{
override fun readBooks() {
println("$name is reading homework")
}
}
运行下面程序:
fun main() {
val student = Student("lucy", 19)
student.doHomework()
}
//结果:do homework default implementation
可见修饰符
如下是Java和Kotlin中可见修饰符的范围和对比。
修饰符 | Java | Kotlin |
---|---|---|
public | 所有类可见 | 所有类可见(默认) |
private | 当前类可见 | 当前类可见 |
protected | 当前类、子类、同一包路径下的类可见 | 当前类、子类可见 |
default | 同一包路径下的类可见(默认) | 无 |
internal | 无 | 同一模块中的类可见 |