Override ကို လွယ်လွယ်နှင့် ရှင်းပြရမည်ဆိုလျှင် Super Class တွင်ရေးသားထားသော လုပ်ဆောင်ချက်နှင့် ထပ်တူ လုပ်ဆောင်ချက်ကို Sub Class တွင်ရေးသားခြင်းအားဖြင့် Super Class ၏ လုပ်ဆောင်ချက်ကိုဖုန်းကွယ်ခြင်းဟု အဓိပ္ပါယ်ရပါလိမ့်မည်။ ဖုန်းကွယ်ခြင်း။ ဘာလို့ဖုန်းကွယ်ရတာလဲ။ ဖုန်းကွယ်လို့ ဘာအကျိုးရှိမှာလဲ ဟုစဉ်းစားစရာရှိပါလိမ့်မည်။ ကျွှန်တော်တို့ လက်တွေရေးပြီးလေ့လာကြည့်ကြပါစို့။
ကျွှန်တော်တို့ SuperClass တစ်ခုရယ်၊ အဲ့ဒီ SuperClass ရဲ့ အမွေဆက်ခံမယ့် SubClass တစ်ခု ကိုရေးပါမယ်။ ပြီးတော့ သူတို့တွေမှာ doBusiness() ဆိုတဲ့ လုပ်ဆောင်ချက်ကို အသီးသီးရေးထားပါမယ်။ ပြီးတော့ MainClass ထဲကနေ SuperClass ရဲ့ instance ကို SubClass နဲ့ new လုပ်ပြီး ခေါ်ယူပါမယ်။ ပြီးတော့ အဲ့ဒီ instance ရဲ့ doBusiness() ကို ခေါ်ကြည့်တဲ့ အခါမှာ ဘယ် class ရဲ့ လုပ်ဆောင်ချက်ကို ခေါ်ယူအသုံးပြုနေသလဲ ဆိုတာကို လေ့လာကြည့်ကြရအောင်။
ကျွှန်တော်တို့ အထက်ပါ Src Code တွေကို Text Editor တစ်ခုကို အသုံးပြု၍ ရေးသားပြီး၊ Main.java ဆိုပြီး သိမ်းဆည်းထားပါမယ်။ ပြီးရင်ကွန်ပိုင်းလုပ်ပြီး အလုပ်လုပ်ခိုင်းကြည့်ပါမယ်။ ပတ်ဝန်းကျင်ပြင်ဆင်မှု့နဲ့ပတ်သက်လို့ကတော့ ယခင် ကျွှန်တော်ရေးသားခဲ့သော Java SE 7 : Hello Java 7! မှ လေ့လာနိုင်ပါသည်။ လက်ရှိ JDK 7 ဟာ beta version ဖြစ်တဲ့အတွက် လက်ရှိ stable version ကို ပြောင်းသုံး စေလိုပါတယ်။
အထက်ပါ Main Class ရဲ့ရလဒ်ကို လေ့လာကြည့်ကြရအောင်။ This is from SubClass. ဆိုတာကို ဖော်ပြနေတာကိုတွေ့ရပါလိမ့်မယ်။ ကျွှန်တော်တို့ Main Class ထဲမှာ SuperClass ရဲ့ instance ကို ခေါ်ပြီး doBusiness လုပ်ဆောင်ချက်ကို လုပ်ကိုင်ခဲ့စေပေမယ့်၊ လက်တွေ့ new လုပ်နေတာက SubClass ဖြစ်ပြီး၊ ပုံစံတူ doBusiness လုပ်ဆောင်ချက်ကို ထပ်မံရေးသားခြင်းအားဖြင့် လက်ရှိအလုပ်လုပ်သောအခါ SubClass ရဲ့ လုပ်ဆောင်ချက်ကို လုပ်ဆောင်သွားတာကို သိမြင်နိုင်ပါတယ်။ ဒီလို override ရဲ့ ထူးခြားချက်ကို အသုံးပြုနေတာကတော့ OOP ရဲ့အနှစ်သာရတစ်ခုဖြစ်တဲ့ Polymorphism မှာပါပဲ။ Polymorphism ရဲ့ အကြောင်းကို နောက်အပါတ်မှာ ဆက်လက်ဖော်ပြသွားပါဦးမယ်။
ကျွှန်တော်တို့ SuperClass တစ်ခုရယ်၊ အဲ့ဒီ SuperClass ရဲ့ အမွေဆက်ခံမယ့် SubClass တစ်ခု ကိုရေးပါမယ်။ ပြီးတော့ သူတို့တွေမှာ doBusiness() ဆိုတဲ့ လုပ်ဆောင်ချက်ကို အသီးသီးရေးထားပါမယ်။ ပြီးတော့ MainClass ထဲကနေ SuperClass ရဲ့ instance ကို SubClass နဲ့ new လုပ်ပြီး ခေါ်ယူပါမယ်။ ပြီးတော့ အဲ့ဒီ instance ရဲ့ doBusiness() ကို ခေါ်ကြည့်တဲ့ အခါမှာ ဘယ် class ရဲ့ လုပ်ဆောင်ချက်ကို ခေါ်ယူအသုံးပြုနေသလဲ ဆိုတာကို လေ့လာကြည့်ကြရအောင်။
class SuperClass { public void doBusiness() { System.out.print("This is from SuperClass."); } } class SubClass extends SuperClass { public void doBusiness() { System.out.print("This is from SubClass."); } } public class Main { public static void main(String [] args) { SuperClass instance = new SubClass(); instance.doBusiness(); } }
ကျွှန်တော်တို့ အထက်ပါ Src Code တွေကို Text Editor တစ်ခုကို အသုံးပြု၍ ရေးသားပြီး၊ Main.java ဆိုပြီး သိမ်းဆည်းထားပါမယ်။ ပြီးရင်ကွန်ပိုင်းလုပ်ပြီး အလုပ်လုပ်ခိုင်းကြည့်ပါမယ်။ ပတ်ဝန်းကျင်ပြင်ဆင်မှု့နဲ့ပတ်သက်လို့ကတော့ ယခင် ကျွှန်တော်ရေးသားခဲ့သော Java SE 7 : Hello Java 7! မှ လေ့လာနိုင်ပါသည်။ လက်ရှိ JDK 7 ဟာ beta version ဖြစ်တဲ့အတွက် လက်ရှိ stable version ကို ပြောင်းသုံး စေလိုပါတယ်။
အထက်ပါ Main Class ရဲ့ရလဒ်ကို လေ့လာကြည့်ကြရအောင်။ This is from SubClass. ဆိုတာကို ဖော်ပြနေတာကိုတွေ့ရပါလိမ့်မယ်။ ကျွှန်တော်တို့ Main Class ထဲမှာ SuperClass ရဲ့ instance ကို ခေါ်ပြီး doBusiness လုပ်ဆောင်ချက်ကို လုပ်ကိုင်ခဲ့စေပေမယ့်၊ လက်တွေ့ new လုပ်နေတာက SubClass ဖြစ်ပြီး၊ ပုံစံတူ doBusiness လုပ်ဆောင်ချက်ကို ထပ်မံရေးသားခြင်းအားဖြင့် လက်ရှိအလုပ်လုပ်သောအခါ SubClass ရဲ့ လုပ်ဆောင်ချက်ကို လုပ်ဆောင်သွားတာကို သိမြင်နိုင်ပါတယ်။ ဒီလို override ရဲ့ ထူးခြားချက်ကို အသုံးပြုနေတာကတော့ OOP ရဲ့အနှစ်သာရတစ်ခုဖြစ်တဲ့ Polymorphism မှာပါပဲ။ Polymorphism ရဲ့ အကြောင်းကို နောက်အပါတ်မှာ ဆက်လက်ဖော်ပြသွားပါဦးမယ်။
Override နဲ့ Overload
Overload ကို အသုံးပြုခြင်းအားဖြင့်၊ class တစ်ခုအတွင်းမှာ Arguments တွေမတူပဲ အမည်တူ လုပ်ဆောင်ချက် တွေကိုရေးသားချင်းအားဖြင့် လုပ်ဆောင်ချက်တွေရဲ့ ဦးတည်ချက်တွေကို နားလည်လွယ်အောင် ရေးသားအသုံးပြုနိုင်ပါတယ်။
Override ကိုအသုံးပြုခြင်းအားဖြင့်၊ အမျိုးအစားတူပြီး လုပ်ဆောင်ချက်တွေမတူတဲ့ Class Design တွေကို ရေးသားနိုင်ပါတယ်။
Overload ကို အသုံးပြုခြင်းအားဖြင့်၊ class တစ်ခုအတွင်းမှာ Arguments တွေမတူပဲ အမည်တူ လုပ်ဆောင်ချက် တွေကိုရေးသားချင်းအားဖြင့် လုပ်ဆောင်ချက်တွေရဲ့ ဦးတည်ချက်တွေကို နားလည်လွယ်အောင် ရေးသားအသုံးပြုနိုင်ပါတယ်။
Override ကိုအသုံးပြုခြင်းအားဖြင့်၊ အမျိုးအစားတူပြီး လုပ်ဆောင်ချက်တွေမတူတဲ့ Class Design တွေကို ရေးသားနိုင်ပါတယ်။
No comments:
Post a Comment