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