Kotlin 接口

  • 接口

    在本章中,我们将学习Kotlin中的接口。在Kotlin中,接口的工作方式与Java 8完全相似,这意味着它们可以包含方法实现以及抽象方法声明。接口可以由类实现,以使用其定义的功能。我们已经在第前面章节“匿名内部类”中介绍了带有接口的示例。在本章中,我们将学习更多有关它的内容。关键字“interface”用于在Kotlin中定义接口,如以下代码所示。
    
    interface ExampleInterface {
       var myVar: String     // 抽象属性
       fun absMethod()       // 抽象方法
       fun sayHello() = "Hello there" // 带有默认实现的方法
    }
    
    在上面的示例中,我们创建了一个名为“ExampleInterface”的接口,并且在其中内部我们拥有一对抽象属性和方法。查看名为“sayHello()”的函数,这是一个已实现的方法。在下面的示例中,我们将在一个类中实现上述接口。
    
    interface ExampleInterface  {
       var myVar: Int            // 抽象属性
       fun absMethod():String    // 抽象方法
       
       fun hello() {
          println("Hello there, Welcome to jc2182.Com!")
       }
    }
    class InterfaceImp : ExampleInterface {
       override var myVar: Int = 25
       override fun absMethod() = "Happy Learning "
    }
    fun main(args: Array<String>) {
       val obj = InterfaceImp()
       println("My Variable Value is = ${obj.myVar}")
       print("Calling hello(): ")
       obj.hello()
       
       print("Message from the Website-- ")
       println(obj.absMethod())
    }
    
    尝试一下
    上面的代码将在浏览器中产生以下输出。
    
    My Variable Value is = 25
    Calling hello(): Hello there, Welcome to jc2182.Com!
    Message from the Website-- Happy Learning 
    
    如前所述,Kotlin不支持多重继承,但是,可以通过一次实现两个以上的接口来实现同一件事。在下面的示例中,我们将创建两个接口,然后再将这两个接口实现为一个类。
    
    interface A {
       fun printMe() {
          println(" method of interface A")
       }
    }
    interface B  {
       fun printMeToo() {
          println("I am another Method from interface B")
       }
    }
    
    // 同时实现两个接口 A 和  B
    class multipleInterfaceExample: A, B
    
    fun main(args: Array≪String>) {
       val obj = multipleInterfaceExample()
       obj.printMe()
       obj.printMeToo()
    }
    
    尝试一下
    在上面的示例中,我们创建了两个示例接口A,B,并且在名为“multipleInterfaceExample”的类中,我们实现了前面声明的两个接口。上面的代码将在浏览器中产生以下输出。
    
     method of interface A
    I am another Method from interface B