کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش کلاس و شیء در Kotlin

کلاس و شیء در Kotlin

در این بخش می‌خواهیم با استفاده از Kotlin به اصول اولیه‌ی برنامه‌نویسی شیءگرا (OOP) بپردازیم. به همین منظور به کلاس و شیء آن و چگونگی بازی کردن با این شیء می‌پردازیم. بر اساس تعریف برنامه‌نویسی شیءگرا، کلاس طرح اولیه‌ی یک نهاد زمان اجرا محسوب می‌شود و شیء آن حالت آن محسوب می‌شود به‌گونه‌ای که رفتار و حالت را شامل می‌شود. در Kotlin، اعلان کلاس متشکل از یک هدر کلاس و بدنه‌ی کلاس است که داخل {} قرار می‌گیرد (شبیه به جاوا).

Class myClass { // class Header

// class Body
}


Kotlin مانند جاوا امکان ایجاد چندین شیء از یک کلاس را فراهم می‌کند و به‌صورت آزادانه می‌توانید اعضا و توابع آن را در برنامه‌ی خود لحاظ کنید. با استفاده از واژه‌های کلیدی مختلفی که در بخش 10 به آن‌ها خواهیم پرداخت، می‌توانیم قابلیت دیدن متغیرهای اعضای کلاسی کنترل کنیم. در مثال زیر، یک کلاس و شیء آن ایجاد شده‌اند که از طریق این شیء می‌توانیم به اعضای داده‌های مختلفی از این کلاس دسترسی پیدا کنیم.

class myClass {
// property (data member)
 private var name: String = "Tutorials.point"
   
// member function
 fun printMe() {
 print("You are at the best Learning website Named-"+name)
 }
}
fun main(args: Array< String >) {
 val obj = myClass() // create obj object of myClass class
 obj.printMe()
}


نتیجه‌ی این کد در پایین نشان داده شده است که در آن ما در حال فراخوانی printMe() مربوط به myClass هستیم، این کار از طریق خود شیء این کلاس انجام می‌شود.

You are at the best Learning website Named- Tutorials.point

کلاس تودرتو

بر اساس تعریف، زمانی که کلاسی داخل کلاس دیگری ایجاد می‌شود به آن کلاس تودرتو گفته می‌شود. در Kotlin این کلاس‌ها به‌صورت پیش‌فرض ایستا هستند؛ به همین دلیل بدون ایجاد هیچ شیئی از این کلاس می‌توان به آن دسترسی پیدا کرد. در مثال زیر چگونگی تفسیر این کلاس تودرتو توسط Kotlin نشان داده شده است.

fun main(args: Array< String >) {
 val demo = Outer.Nested().foo() // calling nested class method
 print(demo)
}
class Outer {
 class Nested {
 fun foo() = "Welcome to The TutorialsPoint.com"
 }
}

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

Welcome to The TutorialsPoint.com

کلاس داخلی

زمانی که یک کلاس تودرتو به‌عنوان یک کلاس داخلی نشان می‌شود، به این کلاس Inner class یا کلاس داخلی گفته می‌شود. از طریق عضو داده‌ی کلاس خارجی می‌توان به این کلاس‌ها دسترسی پیدا کرد. در مثال زیر به عضو داده‌ای کلاس خارجی دسترسی پیدا کرده‌ایم.

fun main(args: Array< String >) {
 val demo = Outer().Nested().foo() // calling nested class method
 print(demo)
}
class Outer {
 private val welcomeMessage: String = "Welcome to the TutorialsPoint.com"
 inner class Nested {
 fun foo() = welcomeMessage
 }
}

نتیجه‌ی این کد در ادامه آمده است به‌گونه‌ای که در آن ما با استفاده از سازنده‌ی پیش‌فرض ارائه‌شده توسط کامپایلرهای Kotlin در زمان کامپایل، این کلاس تودرتو را فراخوانی می‌کنیم.

Welcome to the TutorialsPoint.com

کلاس داخلی بی‌نام

این کلاس جالب زندگی یک برنامه‌نویس را بسیار آسان می‌کند. هر زمان که بخواهیم رابطی را پیاده‌سازی کنیم، مفهوم بلوک داخلی بی‌نام می‌تواند به کمک ما بیاید. به مفهوم ایجاد شیئی از رابط با استفاده از رفرنس شیء زمان اجرا، کلاس بی‌نام گفته می‌شود. در مثال زیر می‌خواهیم رابطی را ایجاد کنیم و پس از آن با استفاده از سازوکار کلاس داخلی بی‌نام شیء این رابط را بسازیم.

fun main(args: Array< String >) {
 var programmer:Human = object:Human // creating an instance of the interface {
 override fun think() { // overriding the think method
 print("I am an example of Anonymous Inner Class ")
 }
 }
 programmer.think()
}
interface Human {
 fun think()
}


نتیجه‌ی این کد را می‌توانید در ادامه مشاهده کنید.

I am an example of Anonymous Inner Class

اسامی مستعار مربوط به نوع‌ها

اسامی مستعار ویژگی‌ای از کامپایلر Kotlin هستند. به کمک این اسامی می‌توان انعطاف‌پذیری ایجاد اسمی جدید برای یک نوع موجود را افزایش داد. لازم به ذکر است که این قابلیت نوع جدیدی را ایجاد نمی‌کند. اگر نام نوع بیش‌ازحد طولانی باشد، در این صورت می‌توانید به‌سادگی نام کوتاه‌تری را انتخاب کنید و برای مصارف آینده‌ی خود از همین اسم استفاده کنید. این اسامی مستعار به‌درستی برای نوع‌های پیچیده مفید هستند. Kotlin در آخرین نسخه‌ی خود پشتیبانی از این اسامی را لغو کرد؛ اما اگر از نسخه‌های قدیمی‌تر این زبان استفاده می‌کنید همچنان می‌توانید مانند زیر از این قابلیت استفاده کنید.

typealias NodeSet = Set< Network.Node >
typealias FileTable< K > = MutableMap< K, MutableList< File > >

1397/09/21 2404 657
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...