درس 7 - اینترفیس ( interface ) در زبان کاتلین
آموزش پیاده سازی interface ها در زبان برنامه نویسی کاتلین

آموزش زبان برنامه نویسی کاتلین بصورت رایگان

در این درس آموزشی به بحث interface ها در زبان برنامه نویسی کاتلین خواهیم پرداخت. استفاده از interface ها در زبان کاتلین درست مثل java 8 است بعبارتی دیگر همانطور که شامل پیاده سازی متود ها است از متودهای abstract نیز استفاده میکند.

در زبان کاتلین هر interface میتواند بعنوان یک کلاس برای تعریف کلی آن ساخته شود. برای تعریف کردن یک اینترفیس جدید در زبان برنامه نویسی کاتلین از عبارت interface استفاده میگردد که در زیر یک مثال ساده برای پیاده سازی اینترفیس در کاتلین آورده شده است.

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

در مثال بالا ما یک اینترفیس ساختم که نام آن ExampleInterface میباشد و داخل آن یک متغیر و یک متود از نوع abstract تعریف کرده ایم.

اینترفیس (interface) در زبان کاتلین

در مثال بالا یک تابع به نام sayHello تعریف کرده ایم که یک متود implement حساب میشود.

آموزش اینترفیس یا interface ها در زبان برنامه نویسی کاتلین

در مثال پایین تر که مثال کاملتری برای استفاده ی اینترفیس ها در زبان کاتلین است میبیند که ما نحوه ی استفاده کردن از یک اینترفیس در کلاس دیگری را نیز مثال زدیم.

Live Demo
interface ExampleInterface  {
   var myVar: Int            // abstract property
   fun absMethod():String    // abstract method
   
   fun hello() {
      println("Hello there, Welcome to avasam!")
   }
}
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())
}

نمونه کد بالا خروجی زیر را در برخواهد داشت.

Calling hello(): Hello there, Welcome to avasam!
Message from the Website-- Happy Learning 

همانطور که در درس قبلی آموزش دادیم زبان کاتلین از ارث بری چندگانه پشتیبانی نمیکند اما با این وجود میتوان با استفاده از پیاده سازی بیش از دو interface به این مورد دسترسی داشت.

در مثال زیر ، ما دو interface در کاتلین تعریف کردیم و سپس از انها در یک کلاس استفاده کرده ایم.

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

در مثال بالا ما دو عدد interface به نام های A و B تعریف کردیم و سپس در کلاسی به نام multipleInterfaceExample هر دو اینترفیس را پیاده سازی کردیم. 

کدهای بالا باید خروجی زیر را داشته باشند :‌

method of interface A
I am another Method from interface B

اتمام درس