[]는 코 틀린 코 틀린 (키워드위원회 인터페이스를 사용하여) 위임



I. 정의하고 공통 인터페이스를 구현



1. 일반 정의 된 인터페이스 : 그리고 추상적 인 키워드를 수정하지 않고 인터페이스 문 인터페이스 인터페이스 방법없는 방법 본체를 사용;

package entrust

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

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

}

: 인터페이스 구현 2. 사용 ":"문 클래스가 구현하는 인터페이스는 인터페이스의 서브 클래스, 클래스, 인터페이스 메소드의 구현 방법을 구현해야합니다 것은 재정의 수정의 사용을 필요로;

package entrust

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

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


II. 사용 위임 구현 인터페이스



사용 대리인이 구현 인터페이스 : 사용하여 : IStudy학생 클래스에 문 IStudy의 클래스가 구현하는 인터페이스를하지만,이 클래스는 연구 () 추상 메소드를 구현하지 않지만, 대표, 연구 BadStudent ()를 호출 할 때 방법은 자동으로 연구 학생 클래스를 호출 () 메소드;

package entrust

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


III는. 대리자를 구현하는 인터페이스의 사용에 따라 추가 작업을 수행하려면



: 사용한 대표 인터페이스에 기초하여 수행되는 추가 작업 실행 , 정지 방법의 인터페이스로 구현 될 수 있지만, 클래스를 구현하는 인터페이스 및 다른 클래스에 위탁 인터페이스 동작은, 재기록 프로세스에 위임 할 수있다 메소드가 호출 될 추가적으로 다른 작업을 수행 할 수있다;

package entrust

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

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

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

        Student().study()

        println("加强学习")

    }

}


. 세 가지 테스트 인터페이스 위 IV (일반적인 구현 | 수수료 | 의뢰 + 추가 작업)



이 세 가지 조건을 테스트 :


① 테스트 인터페이스 클래스;

② 시험 의뢰;

③ 시험 동시에 추가적인 다른 작업을 위임;

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()

}
게시 된 307 개 원래 기사 · 원 찬양 1043 · 조회수 170 만 +

추천

출처blog.csdn.net/han1202012/article/details/105001048