Kotlin

Bridge to Kotlin Part 5 (Classes and Objects)

အရင်အပိုင်းတွေ လေ့လာချင်တယ်ဆိုရင်

Overriding Methods and Overriding Properties

Overriding methods and properties တွေကတော ပုံစံ ခပ်ဆင်ဆင်ပါပဲ။ ဒါပေမယ့် ပြန်နွေးပြီးသား ဖြစ်အောင် လေ့လာကြည့်ပါမယ်။

super ဆိုပြီး အပေါ်ကို ပြန်ခေါ်လို့ရတာ တွေ့ရပါမယ်။ override properties တွေကို သုံးချင်ရင်တော့ override method တွေလိုပဲ open ဆိုပြီး အပေါ်မှာ ရေးခဲ့ပေးပြီး အောက်မှာ override လုပ်လို့ရပါတယ်။

Singleton Object & Companion Object

ကျွန်တော်တို့ တစ်ခါတစ်လေမှာ Object တွေဟာ တစ်ကြိမ်တည်း create လုပ်ပြီး အဲဒီ Object ကိုပဲ အကြိမ်ကြိမ် ပြန်သုံးရလေ့ရှိပါတယ်။ အဲဒီလို ပုံစံကို Singleton ပုံစံလို့ ခေါ်ပါတယ်။ ပုံမှန်အတိုင်းဆိုရင်တော့ Object တစ်ခု ဖန်တီး၊ နောက်တစ်ခါ ပြန်သုံးချင်တယ်ဆိုရင် Memory ပေါ်မှာ ရှိမရှိ ပြန်စစ်ပြီး သုံးတဲ့ ပုံစံကို ရေးရပါတယ်။ ကျွန်တော်တို့ Kotlin မှာတော့ Singleton Object ကို Programming Level Support ပေးလိုက်ပါတယ်။ (Scala လိုမျိုးပေါ့)

အပေါ်မှာ ပြထားတဲ့အတိုင်း ရေးလိုက်မယ်ဆိုရင် Singleton ပုံစံ သုံးလို့ရတာ တွေ့ရပါလိမ့်မယ်။ object ဆိုတဲ့ keyword ကို သုံးပြီး တည်ဆောက်ရတာပါ။ ဒါပေမယ့် ဒီလို ရေးလိုက်တဲ့အခါ object အတွက် primary constructor တွေ အလုပ်မလုပ်တော့ပါဘူး။ ဒါပေမယ့် init() block တွေကတော့ ထုံးစံအတိုင်း အစဉ်လိုက် အလုပ်လုပ်ပါတယ်။ ကျွန်တော်တို့ ဥပမာနဲ့ လေ့လာကြည့်ရအောင်

init block တွေ အစီအစဉ်အတိုင်း run သွားတာ တွေ့ရပါလိမ့်မယ်။

ဒီနေရာမှာ တစ်ခု သတိထားဖို့ လိုအပ်တာက ကျွန်တော်တို့ အရင်တုံးက သုံးသလို static method တွေ သုံးချင်တယ်ဆိုရင် Kotlin မှာ package level function တွေ သုံးလိုက်လို့ရတယ်ဆိုတာပါ။ package level function ဆိုတာ fun <functionName> ဆိုပြီး ဘာ class မှ မဆောက်ပဲ တန်းရေးလိုက်လို့ရတာကို ဆိုလိုပါတယ်။ အဲဒီလိုပဲ static properties တွေကို ရေးချင်တယ်ဆိုရင်လဲ အရင်လို class ဆောက် static လို့ ပေး စသည်ဖြင့် ရေးစရာမလိုတော့ပါဘူး။ ရိုးရိုး kotlin file တစ်ခုမှာ တန်းရေးလိုက်ရုံပါပဲ။

ကျွန်တော်တို့ ရေးနေကြပုံစံတွေနဲ့ ကွဲထွက်သွားတဲ့အတွက် ဒီနေရာမှာတော့ တကယ်တန်း Android ရေးတဲ့အခါ သတိထားမှာ သုံးဖြစ်မယ့် အနေအထား ဖြစ်ပါတယ်။

Companion Object

Companion Object တွေကတော့ class အတွင်းမှာ အသုံးပြုတဲ့ object တွေလို့ ယျေဘူယျ သတ်မှတ်နိုင်ပါတယ်။ ဘာကြောင့် class အတွင်းမှာ object ထားပြီး ရေးဖို့ လိုသလဲဆိုရင် ကျွန်တော်တို့ object တွေမှာ constructor တွေ အသုံးပြုလို့မရပါဘူး။ အဲဒီအတွက် Factory Object တွေ တည်ဆောက်တဲ့အခါ constructor မပါတဲ့အတွက် အခက်အခဲတွေ ရှိလာနိုင်ပါတယ်။ အဲဒီလို အခြေအနေအတွက်ဆိုရင် အောက်မှာ ပြထားတဲ့အတိုင်း companion object တွေကို သုံးလို့ရပါတယ်။

အဲဒီအတိုင်း run ကြည့်မယ်ဆိုရင် Factory ပုံစံကို ရလာတာ တွေ့ရပါလိမ့်မယ်။

ဆက်ပါဦးမယ်

Object Declaration and Object Expression

ကျွန်တော် Kotlin စလေ့လာတော့ Object Declaration နဲ့ Object Expression ကို မျက်စိလည်ပါတယ်။ ကျွန်တော်တို့ ဒီနေရာမှာ နမူနာလေးတွေနဲ့ လေ့လာကြည့်မယ်ဆိုရင် နားလည်သွားပါလိမ့်မယ်။

အပေါ်မှာ ရေးထားတဲ့ ပုံစံက Object Declaration ပုံစံ ဖြစ်ပါတယ်။ object ပုံစံရော companion object ပုံစံပါ တစ်ခါတည်း ရေးပြထားပါတယ်။

ဒီနေရာမှာ ထိထိရောက်ရောက် နားလည်ဖို့ လိုအပ်ချက်တွေ ရှိကောင်း ရှိနေနိုင်ပါတယ်။

Object Expression ကတော့ Java မှာ Anonymous class တွေနဲ့ ဆင်တူပါတယ်။ Object Declaration နဲ့ Object Expression တူညီတဲ့ အချက် တစ်ခုရှိတာကတော့ Singleton Pattern ကို လိုက်နာပြီး Single Object ပဲ ရှိတယ်ဆိုတဲ့အချက် ဖြစ်ပါတယ်။ ကျွန်တော်တို့ နမူနာရေးကြည့်ရအောင်

အပေါ်က program ကို လေ့လာကြည့်မယ်ဆိုရင် object expression ကို တွေ့နိုင်ပါတယ်။ အမည်မပါပဲ Single Instance Object တစ်ခု တည်ဆောက်လိုက်ပြီး အသုံးပြုတဲ့ပုံစံပါ။ အဓိကအားဖြင့် ကျွန်တော်တို့ Android မှာ ရှိတဲ့ addOnClickListener() စတာတွေမှာ သုံးဖို့ ရည်ရွယ်ပါတယ်။

ဆက်ပါဦးမယ်