مشخصات مقاله
-
652
-
0.0
-
2358
-
0
-
0
نقش رابطها(Interface) در Kotlin
رابطها(Interface) در Kotlin
در این بخش میخواهیم به رابطهای موجود در Kotlin بپردازیم. شیوهی عملکرد این رابطها در Kotlin درست مانند جاوا 8 است. یعنی این رابطها میتوانند در کنار اعلان متدهای انتزاعی پیادهسازی متد را نیز شامل شوند. برای آنکه بتوان از عملکرد یک رابط بهره برد، باید آن را توسط یک کلاس پیادهسازی کرد. در حال حاضر در بخش 6 قسمت «کلاس داخلی بینام» مثالی را برای یک رابط آوردهایم. در این بخش میخواهیم بیشتر در رابطه با آن صحبت کنیم. جهت تعریف یک رابط در Kotlin، همانطور که در تکه کد زیر نشان داده شده است از واژهی کلیدی interface استفاده میشود.
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())
}
نتیجهی کد بالا در ادامه مشهود است.
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