Kotlin - อินเทอร์เฟซ

ในบทนี้เราจะเรียนรู้เกี่ยวกับอินเทอร์เฟซใน Kotlin ใน Kotlin อินเทอร์เฟซจะทำงานคล้ายกับ Java 8 ทุกประการซึ่งหมายความว่าสามารถมีการใช้งานเมธอดและการประกาศเมธอดนามธรรมได้ อินเทอร์เฟซสามารถใช้งานได้โดยคลาสเพื่อใช้ฟังก์ชันที่กำหนดไว้ เราได้แนะนำตัวอย่างที่มีอินเทอร์เฟซในบทที่ 6 ไปแล้ว - ส่วน“ คลาสภายในที่ไม่ระบุชื่อ” ในบทนี้เราจะเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ คำสำคัญ "อินเทอร์เฟซ" ใช้เพื่อกำหนดอินเทอร์เฟซใน Kotlin ดังที่แสดงในโค้ดต่อไปนี้

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

ในตัวอย่างข้างต้นเราได้สร้างอินเทอร์เฟซหนึ่งชื่อเป็น“ ExampleInterface” และภายในนั้นเรามีคุณสมบัติและวิธีการที่เป็นนามธรรมอยู่ด้วยกัน ดูฟังก์ชันที่ชื่อว่า“ 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 ไม่สนับสนุนการสืบทอดหลายรายการอย่างไรก็ตามสิ่งเดียวกันนี้สามารถทำได้โดยใช้อินเทอร์เฟซมากกว่าสองอินเทอร์เฟซในแต่ละครั้ง

ในตัวอย่างต่อไปนี้เราจะสร้างสองอินเทอร์เฟซและหลังจากนั้นเราจะนำทั้งสองอินเทอร์เฟซไปใช้ในคลาส

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

ในตัวอย่างข้างต้นเราได้สร้างอินเทอร์เฟซ A, B สองตัวอย่างและในคลาสชื่อ“ multipleInterfaceExample” เราได้ใช้สองอินเทอร์เฟซที่ประกาศไว้ก่อนหน้านี้ โค้ดด้านบนจะให้ผลลัพธ์ต่อไปนี้ในเบราว์เซอร์

method of interface A
I am another Method from interface B