Kotlin-インターフェース

この章では、Kotlinのインターフェースについて学習します。Kotlinでは、インターフェースはJava 8とまったく同じように機能します。つまり、メソッドの実装と抽象メソッドの宣言を含めることができます。インターフェースは、定義された機能を使用するためにクラスによって実装できます。第6章の「匿名内部クラス」のセクションで、インターフェイスを使用した例をすでに紹介しました。この章では、それについてさらに学びます。次のコードに示すように、キーワード「interface」を使用して、Kotlinでインターフェースを定義します。

interface ExampleInterface {
   var myVar: String     // abstract property
   fun absMethod()       // abstract method
   fun sayHello() = "Hello there" // method with default implementation
}

上記の例では、「ExampleInterface」という名前の1つのインターフェイスを作成し、その中にいくつかの抽象的なプロパティとメソッドをすべてまとめています。実装されたメソッドである「sayHello()」という名前の関数を見てください。

次の例では、上記のインターフェイスをクラスに実装します。

interface ExampleInterface  {
   var myVar: Int            // abstract property
   fun absMethod():String    // abstract method
   
   fun hello() {
      println("Hello there, Welcome to TutorialsPoint.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 TutorialsPoint.Com!
Message from the Website-- Happy Learning

前述のように、Kotlinは多重継承をサポートしていませんが、一度に3つ以上のインターフェースを実装することで同じことが実現できます。

次の例では、2つのインターフェイスを作成し、後で両方のインターフェイスをクラスに実装します。

interface A {
   fun printMe() {
      println(" method of interface A")
   }
}
interface B  {
   fun printMeToo() {
      println("I am another Method from interface B")
   }
}

// implements two interfaces A and B
class multipleInterfaceExample: A, B

fun main(args: Array<String>) {
   val obj = multipleInterfaceExample()
   obj.printMe()
   obj.printMeToo()
}

上記の例では、2つのサンプルインターフェイスA、Bを作成し、「multipleInterfaceExample」という名前のクラスで、前に宣言した2つのインターフェイスを実装しました。上記のコードは、ブラウザに次の出力を生成します。

method of interface A
I am another Method from interface B