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.