May 1, 2012

Override ဆို​သည်မှာ

Override ကို လွယ်⁠လွယ်​နှင့် ရှင်း​ပြ​ရ​မည်​ဆို​လျှင် Super Class တွင်​ရေးသား​ထား​သော လုပ်ဆောင်​ချက်​နှင့် ထပ်တူ လုပ်ဆောင်​ချက်​ကို Sub Class တွင်​ရေးသား​ခြင်း​အား​ဖြင့် Super Class ၏ လုပ်ဆောင်​ချက်​ကို​ဖုန်း​ကွယ်​ခြင်း​ဟု အဓိပ္ပါယ်​ရ​ပါ​လိမ့်​မည်။ ဖုန်း​ကွယ်​ခြင်း။ ဘာ​လို့​ဖုန်း​ကွယ်​ရ​တာ​လဲ။ ဖုန်း​ကွယ်​လို့ ဘာ​အကျိုး​ရှိ​မှာ​လဲ ဟု​စဉ်းစား​စရာ​ရှိ​ပါ​လိမ့်​မည်။ ကျွှန်တော်​တို့ လက်​တွေ​ရေး​ပြီး​လေ့​လာ​ကြည့်​ကြ​ပါ​စို့။

ကျွှန်တော်​တို့ 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 တွေ​ကို ရေးသား​နိုင်​ပါ​တယ်။

No comments:

Post a Comment