Kotlin - Uzantı

Bu bölümde, Kotlin'in "Uzantı" adlı bir başka yeni özelliğini öğreneceğiz. Uzantıyı kullanarak, bazı yöntem işlevlerini devralmadan veya değiştirmeden bile ekleyebilir veya kaldırabiliriz. Uzantılar istatistiksel olarak çözülür. Gerçekte var olan sınıfı değiştirmez, ancak bir nokta işlemiyle çağrılabilen çağrılabilir bir işlev oluşturur.

İşlev Uzantısı

İşlev uzantısında Kotlin, ana sınıfın dışında bir yöntem tanımlamaya izin verir. Aşağıdaki örnekte, uzantının işlevsel düzeyde nasıl uygulandığını göreceğiz.

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
}

Yukarıdaki örnekte, "Alien" sınıfının içinde "addMySkills ()" olarak adlandırılan herhangi bir yöntemimiz yok, ancak yine de aynı yöntemi sınıfın dışında başka bir yerde uyguluyoruz, Bu, uzantının büyüsüdür.

Yukarıdaki kod parçası, tarayıcıda aşağıdaki çıktıyı üretecektir.

JAVA SQL

Nesne Uzantısı

Kotlin, Java'nın statik işlevselliğini uygulamak için başka bir mekanizma sağlar. Bu, "tamamlayıcı nesne" anahtar sözcüğü kullanılarak elde edilebilir. Bu mekanizmayı kullanarak, bir fabrika yöntemi içinde bir sınıfın nesnesini oluşturabiliriz ve daha sonra bu yöntemi sınıf adının referansını kullanarak çağırabiliriz. Aşağıdaki örnekte, bir "eşlik eden nesne" oluşturacağız.

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

Yukarıdaki kod parçası, tarayıcıda aşağıdaki çıktıyı verecektir.

Heyyy!!! You are learning Kotlin from TutorialsPoint.com

Yukarıdaki örnek Java'da statik gibi görünüyor, ancak gerçek zamanlı olarak aynı sınıfın bir üye değişkeni olarak bir nesne oluşturuyoruz. Bu nedenle, uzantı özelliği altına da dahil edilir ve alternatif olarak bir nesne uzantısı olarak adlandırılabilir. Temel olarak aynı sınıfın nesnesini üye işlevlerden bazılarını kullanacak şekilde genişletiyorsunuz.