درس 9 - آموزش Extension ها در کاتلین
آموزش رایگان زبان برنامه نویسی کاتلین - آواسام

اموزش extention ها در زبان برنامه نویسی کاتلین 

در این درس قراره درباره ی یه موضوع جدید که در زبان برنامه نویسی کاتلین مطرح شده است بپردازیم که اسمش extention ها میباشد. با استفاده از extention ها ما قادر خواهیم بود تا به عملکرد متود ها چیزی اضافه کنیم یا حذف کنیم که این کار بدون ارث بری یا انجام هرگونه تغییری در کلاس اصلی اتفاق میوفتد.

extention ها بعنوان استاتیک تعریف و استفاده میشوند . extention ها مستقیما روی کلاس جاری هیچ تغییری اعمال نمیکند ولی یک تابع قابل صدا زدن ساخته میشود که با استفاده از نقطه صدا زده میشود.

Live Demo
class Alien {
   var skills : String = "null"
	
   fun printMySkills() {
      print(skills)
   }		
}
fun main(args: Array<String>) {
   var  a1 = Alien()
   a1.skills = "JAVA"
   //a1.printMySkills()
	
   var  a2 = Alien()
   a2.skills = "SQL"
   //a2.printMySkills()
	
   var  a3 = Alien()
   a3.skills = a1.addMySkills(a2)
   a3.printMySkills()
}
fun Alien.addMySkills(a:Alien):String{
   var a4 = Alien()
   a4.skills = this.skills + " " +a.skills
   return a4.skills
}

 

در مثال بالا ، ما در کلاس Alien هیچ متودی با نام addMySkills وجود ندارد ولی به هر حال ما میتوانیم این متود را در هر جایی بیرون از کلاس ایجاد کنیم و این معجزه ی extension ها در زبان برنامه نویسی کاتلین است.

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

JAVA SQL

 

Object Extension در زبان کاتلین

زبان کاتلین یک روش دیگری برای پیاده سازی مفهوم static جاوا دارد. این روش با استفاده از عبارت companion object قابل استفاده است.

با استفاده از این مکانیسم ، ما میتوانیم یک آبجکت از یک کلاس بسازیم و سپس فقط با اشاره به نام متود میتوانیم آنرا صدا بزنیم.

در مثال زیر نمونه ای از companion object در زبان کاتلین میبینیم : 

Live Demo
fun main(args: Array<String>) {
   println("Heyyy!!!"+A.show())
}
class A {
   companion object {
      fun show():String {
         return("You are learning Kotlin from avasam")
      }
   }
}

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

Heyyy!!! You are learning Kotlin from avasam

مثال بالا شبیه به مبحث static در زبان برنامه نویسی جاوا است ، در یک زمان واحد ما یک آبجکت از همان کلاس بعنوان یکی از اعضای همان کلاس میسازیم.

در حقیقت با این کار شما در حال گسترش یک شی از همان کلاس هستید تا از بعضی از توابع استفاده کنید.

اتمام درس