Definición de interfaz
Las definiciones de interfaz en kotlin y Java son similares:
interface Study {
fun doHomework()
fun readBooks()
}
implementación de la interfaz
Para implementar la interfaz de Study en Student, se deben implementar todas las funciones no implementadas declaradas en 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")
}
}
Lo siguiente se utiliza para el polimorfismo de la interfaz:
fun main() {
val student = Student("lucy", 19)
//student.doHomework()
study(student)
}
fun study(study: Study) {
study.doHomework()
}
//结果:lucy is doing homework
Implementación de la función de interfaz
Kotlin permite implementaciones predeterminadas para funciones definidas en interfaces.
interface Study {
fun doHomework(){
println("do homework default implementation")
}
fun readBooks()
}
Dado que doHomework tiene una implementación predeterminada, la clase de implementación de la interfaz ya no será necesaria para implementarla.
class Student(name: String, age: Int) : Person(name, age), Study{
override fun readBooks() {
println("$name is reading homework")
}
}
Ejecute el siguiente programa:
fun main() {
val student = Student("lucy", 19)
student.doHomework()
}
//结果:do homework default implementation
modificador visible
A continuación se muestra el rango y la comparación de los modificadores visibles en Java y Kotlin.
modificador | Java | kotlin |
---|---|---|
público | Todas las clases son visibles | Todas las clases son visibles (predeterminado) |
privado | La clase actual es visible. | La clase actual es visible. |
protegido | La clase actual, las subclases y las clases en la misma ruta del paquete son visibles | La clase actual y las subclases son visibles |
por defecto | Las clases bajo la misma ruta de paquete son visibles (predeterminado) | ninguno |
interno | ninguno | Las clases en el mismo módulo son visibles |