[] Kotlin Kotlin encargó (mediante el uso de la interfaz de la comisión de palabras clave)



I. definir e implementar una interfaz común



1. interfaz definida ordinario: Utilice la sentencia interfaz de métodos de interfaz interfaz sin cuerpo del método, y sin la modificación resumen palabra clave;

package entrust

/**
 * 定义一个学习接口 , 代表有学习的能力
 */
interface IStudy {

    /**
     * 抽象方法 , 学习
     */
    fun study()

}

2. implementar la interfaz: Uso ":" clase implementa la interfaz Declaración es una subclase de la interfaz, nota que la clase debe implementar el método de implementación del método de interfaz requiere el uso de la modificación de anulación;

package entrust

/**
 * 定义学生类 , 实现学习接口 , 其有学习的能力
 */
class Student : IStudy {

    /**
     * 实现的学习抽象方法
     */
    override fun study() {
        println("学习")
    }
}


II. El uso implementos delegar la interfaz



El uso de delegado implementa la interfaz: el uso de los : IStudyinstrumentos de la clase comunicado iStudy la interfaz, pero esta clase no implementa estudio () método abstracto, pero los delegados a la clase del estudiante, al llamar a la BadStudent estudio () se invoca automáticamente la clase Estudiante Estudio método ();

package entrust

/**
 * 坏学生不学习 , 虽然实现了学习接口 , 但是其委托 普通学生来学习 , 自己什么都不做
 */
class BadStudent : IStudy by Student() {
}


III. Para llevar a cabo operaciones adicionales basado en el uso de los implementos delegar la interfaz



Utilizando los delegados implementan operaciones adicionales realizadas sobre la base de la interfaz: cuando la clase implementa la interfaz y el funcionamiento de la interfaz confiado a otra clase, sin dejar de interfaz método puede ser implementado, en el proceso de reescritura, se invoca el método puede delegar, y puede realizar, además, otras operaciones;

package entrust

/**
 * 最好的学生
 * 委托 学生学习 , 自己额外学习更多东西
 */
class BestStudent : IStudy by Student() {

    /**
     * 委托其它类后 , 也可以自己实现该类 , 在委托方法的前后可以执行其它额外操作
     */
    override fun study() {

        println("复习之前的知识")

        Student().study()

        println("加强学习")

    }

}


. IV anterior interfaz de prueba de tres (implementación común | comisión | encargados + operaciones adicionales)



Prueba de estas tres condiciones:


① clase de interfaz de prueba;

② prueba encargada;

③ Prueba delegar otras operaciones adicionales simultáneamente;

package entrust

fun main() {

    // I . 测试接口实现类

    //创建 接口实现类 对象
    var goodStudent : Student = Student()

    //执行实现的内容
    //  学习
    goodStudent.study()


    // II . 测试委托

    // 创建 使用委托实现接口 类的对象
    var badStudent : BadStudent = BadStudent()

    //执行委托的方法
    //  学习
    badStudent.study()


    //III . 测试委托的同时额外执行其它操作

    //创建 使用委托实现接口并执行额外操作 类的对象
    var bestStudent : BestStudent = BestStudent()

    //执行委托方法和额外操作
    /*
        复习之前的知识
        学习
        加强学习
     */
    bestStudent.study()

}
Publicados 307 artículos originales · ganado elogios 1043 · Vistas 1.7 millones +

Supongo que te gusta

Origin blog.csdn.net/han1202012/article/details/105001048
Recomendado
Clasificación