Aprendizaje de Kotlin - interfaz + modificador visible

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

Supongo que te gusta

Origin blog.csdn.net/kongqwesd12/article/details/131224373
Recomendado
Clasificación