ကျွှန်တော်တို့ Easy Java ဟူသော ခေါင်းစဉ်ဖြင့် Java ရဲ့ သဘောတရားများ၊ Java နဲ့ ပတ်သက်တဲ့ OOP သဘောတရားများကို၊ သုံးသင့်တဲ့နေရာ မသုံးသင့်တဲ့နေရာ များကိုခွဲပြီးလေ့လာခဲ့၏။ ယခုအကြိမ်တွင် Java ကို အမြန်ဆုံးလေ့လာခြင်း ရဲ့ နောက်ဆုံးအခေါက်အနေနဲ့ OOP ရဲ့ အနှစ်သာရ ဖြစ်တဲ့ Polymorphism အကြောင်းကို လေ့လာသွားပါမည်။
ကျွှန်တော်မှတ်မိပါသေးသည်။ ဤစကားလုံး Polymorphism အကြောင်းကို စသိခဲ့သည်မှာ ၁၀တန်း ဇီဝဗေဒဘာသာ သင်ခန်းစာ စာအုပ်ထဲမှဖြစ်ပါသည်။ Ameba များ၏ ပုံစံအမျိုးမျိုးပြောင်းလည်းနိုင်ပုံကို Polymorphic ဟုသုံးနှုန်းထားခြင်းဖြစ်၏။
Java နဲ့ OOP တွင် ဤစကားလုံးကို ပြန်ကြားရသောအခါ၊ ဘယ်လိုလုပ်မှာလဲ ဟုစဉ်းစားခဲ့မိပါသည်။ ဤအခန်းသည် နည်းနည်းလည်းရှုပ်၍၊ အသုံးလည်းဝင်ပါသဖြင့် ကျွှန်တော်တို့ Polymorphism ရဲ့ သဘောတရားနဲ့၊ Java က Polymorphism ကို ဘယ်လိုပုံဖော်နေတယ်ဆိုတာကို အသေအချာ လေ့လာမှတ်သားထားဖို့ လိုအပ်ပေသည်။
လွယ်လွယ်နှင့် အဓိပ္ပါယ်ဖွင့်ရလျှင် လုပ်ဆောင်ချက်များမှာတူညီပေမယ့်၊ ကွဲပြားသောလုပ်ရပ်များကို Polymorphism ဟုခေါ်သည် ဟုဆိုနိုင်ပါသည်။ ဥမမာအားဖြင့် အောက်ပါပုံပါအတိုင်း ခွေးတစ်ကောင်ကို စကားပြောပါဟုပြောလျှင် ဝုတ်ဝုတ် ဟုအသံထွက်သလို၊ ကြောင်တစ်ကောင်သည် ညှောင်ညှောင်ဟု အသံထွက်ပါလိမ့်မည်။ ဤကဲ့သို့သော ပုံစံအမျိုးမျိုးကွဲပြားပုံကို Polymorphism ဟုခေါ်ပါသည်။
ဟုတ်ပြီ၊ ကျွှန်တော်တို့ Java ဘက်ကနေပြန်စဉ်းစားကြည့်ကြရအောင်။ Java မှာ လုပ်ဆောင်ချက်များကို method နဲ့ ရေးသားပုံဖော်နေပါသဖြင့်၊ တူညီသော Method တစ်ခုဖြင့်၊ မတူညီသောလုပ်ဆောင်ချက်များကို လုပ်ဆောင်ပေးနိုင်ခြင်းဟု အဓိပ္ပါယ်ရပါလိမ့်မည်။ ကျွှန်တော်တို့ လက်တွေ့ ရေးကြည့်ကြရအောင်။
Poly1.java
အထက်ပါ Poly1.java ကို ကွန်ပိုင်းလုပ်ပြီး၊ အလုပ်လုပ်ခိုင်းကြည့်ပါက အောက်ပါအတိုင်း အလုပ်လုပ်မည်ဖြစ်သည်။ getNameဆိုတဲ့ လုပ်ဆောင်ချက်တစ်ခုတည်းမှ အဖြေနှစ်ခုရနေသည်ကို တွေ့မြင်ရပေမည်။ အဲ့ဒီအတွက် Polymorphism ကို အသုံးပြုနေသည်ကို တွေ့ရပေမည်။
သေသေချာချာစဉ်းစားကြည့်ပါက Overload နှင့်ဘာမှမကွာပေ။ ဤသို့ဆိုလျှင် Polymorphism ကိုအသုံးပြုတဲ့ အကျိုးဘာများရှိပါဦးမည်နည်း။ Polymorphism ၏အကျိုးကျေးဇူးများတွင် အမည်တူကိုအသုံးပြုခြင်းအားဖြင့်၊ အမည်အမျိုးမျိုးကိုမှတ်စရာမလိုခြင်း၊ တဖန် အမည်တစ်မျိုးတည်းကိုသာ အသုံးပြုပါသဖြင့် အမှားနည်းပါးစေခြင်း အစရှိတဲ့ ကျေးဇူးများလည်းပါဝင်ပေသည်။ သို့ရာတွင် အမည်တူကိုမသုံးပါလျှင် အဓိပ္ပါယ်မရှိပါ။
ဤနေရာတွင် Java ဘာသာရပ်၌၊ abstract method (တကယ်မရှိပေမယ့် ရှိသင့်တဲ့လုပ်ဆောင်ချက်များ) နဲ့ Override ကို အသုံးပြုခြင်းအားဖြင့် Polymorphism ရဲ့ သဘောတရားတွေကို အပြည့်အဝရရှိစေရန် စီစဉ်ထားပေသည်။ ကျွှန်တော်တို့ abstract class တစ်ခုဖြစ်တဲ့Pet ထဲမှာ လိုအပ်တဲ့ လုပ်ဆောင်ချက်ဟာ greet() ရှိကြောင်း abstract method တစ်ခုဖြစ်တဲ့ abstract void greet();ဟုရေးသားထားပါတယ်။ အဲ့ဒီအတွက် Pet class ကို အမွေဆက်ခံမည့် Class တွေမှာ ရှိသင့်တဲ့ လုပ်ဆောင်ချက် greet() ကို ရေးသားဖို့လိုအပ်ပါလိမ့်မည်။
တဖန် Cat နဲ့ Dog ကို Pet ရဲ့ အမွေဆက်ခံစေပြီးgreet() လုပ်ဆောင်ချက်ကို overrideလုပ်ပြီး ရေးသားစေပါတယ်။
Poly2.java
ဤကဲ့သို့ ရှိသင့်တဲ့ Object ရဲ့ ပုံစံကို abstract class မှာသက်မှတ်ခြင်းအားဖြင့် အမျိုးတူ Object အစုအဝေးများကို ရေးသားနိုင်မှာဖြစ်ပါတယ်။
Abstract Method နဲ့ Override ကို အသုံးပြုခြင်းအားဖြင့် Polymorphism ကို ပုံဖော်နိုင်ကြောင်းဖော်ပြခဲ့ပြီးဖြစ်သည်။ သို့ရာတွင် Java ၏အမွေဆက်ခံမှု့တွင် ပြဿနာတစ်ခုရှိပါသေးသည်။ ထိုအရာမှာ တစ်ခုတည်းသော Class မှသာ အမွေဆက်ခံနိုင်ခြင်း ဖြစ်၏။ အဲ့ဒီအတွက် ရှိသင့်တဲ့ လုပ်ဆောင်ချက်များကို အများအပြားအသုံးပြုလိုပါက အစကတည်းက Super Class တွင် ကြိုရေးထားဖို့လိုအပ်ပေမည်။ တဖန် ရှိတဲ့ ရှိသင့်တဲ့လုပ်ဆောင်ချက်များထဲမှ တချို့တစ်ဝက်ကိုသာ အသုံးပြုလိုသည့်အခါမှာလည်း ဒုက္ခများတက်ပေသည်။
ထိုအခါမျိုးတွင် အသုံးဝင်သည်မှာ Interface ဖြစ်ပေသည်။ Polymorphism ကိုလည်း ပုံဖော်ပေးရင်း၊ တစ်ခုတည်းသော Class မှ အမွေဆက်ခံနိုင်ခြင်း ပြဿနာကိုလည်းဖြေရှင်းပေးနိုင်ပါသည်။လိုအပ်သော လုပ်ဆောင်ချက်များကို ဖြည့်စွက်လိုပါက interface များကို အကြိမ်ကြိမ် ဖြည့်စွက်ခြင်းအားဖြင့် အသေးစိတ် Class ဒီဇိုင်းများကို ပုံဖော်နိုင်မှာဖြစ်ပါတယ်။
Poly3.java
ကျွှန်တော်တို့ ဤအခန်းတွင် Polymorphism ဆိုတာဘာလဲ။ ပြီးတော့ Java ဘက်ကကြည့်တဲ့ Polymorphism ဆိုတာဘာလဲ။ Polymorphism ရဲ့ အကျိုးသက်ရောက်မှု့တွေ မှာဘာတွေရှိသလဲ။ Java နဲ့ Polymorphism ကို ဘယ်လိုပုံဖော်နိုင်သလဲဆိုတာကို အဓိကထား၍ဖော်ပြခဲ့သည်။
Polymorphism ဆိုသည်မှာ အမည်တူလုပ်ဆောင်ချက်တွေဖြင့်၊ မတူညီသောရလဒ်များကို ရရှိစေခြင်းဟုအဓိပ္ပါယ်ဖွင့်နိုင်ပါသည်။ ဤကဲ့သို့ အမည်တူ လုပ်ဆောင်ချက်များကို အသုံးပြုခြင်းအားဖြင့် မှတ်ရလွယ်ကူစေခြင်း၊ အမှားနည်းပါးစေခြင်း အစရှိတဲ့ အကျိုးကျေးဇူးများအပြင်၊ လိုအပ်တဲ့လုပ်ဆောင်ချက်များကို Super Class မှ အမွေဆက်ခံပြီး၊ ပြောင်းပြီးရေးသားလိုတဲ့ လုပ်ဆောင်ချက်များကိုသာ Override လုပ်ခြင်းအားဖြင့် Class အုပ်စုများကို ဖွဲ့စည်းနိုင်ကြောင်း အစရှိတဲ့ အကျိုးကျေးဇူးများကို ရရှိစေနိုင်ပါတယ်။
တဖန် Java တွင် Polymorphism ကို ပုံဖော်နိုင်ရန် Overload, Override, Abstract Class and Method နဲ့ Interface များကို အသုံးပြုနိုင်ကြောင်း ဖော်ပြခဲ့၏။
ဘာသာရပ်တွေ၊ သဘောတရားတွေ၊ Framework တွေ နဲ့ နည်းပညာများသည် ကရိယာများသာဖြစ်ကြသည်။ အသုံးပြုမည့်သူမှာ ရေးသားသူကိုယ်တိုင်ဖြစ်သည်။ ကရိယာတွေဘယ်လောက်ကောင်းကောင်း အနှစ်သာရမရှိလျှင် Application တစ်ခုဟာ အသုံးတည့်မှာမဟုတ်ပါဘူး။ F1 ကားပြိုင်ပွဲကို ကြည့်စေလိုပါသည်။ အကောင်းဆုံးစက်တွေနဲ့ အမြင့်မားဆုံး အမြန်ကို ပြိုင်ဆိုင်နေကြသည်။ စက်တွေရဲ့ လုပ်ဆောင်နိုင်အားသည် အဲ့ဒီလောက်မကွာကြပါ။ ဒါပေမယ့် ကားမောင်းသူရဲ့ သဘာနဲ့ အနိုင်အရှုန်းဟာ စကားပြောစေပါတယ်။
အဲ့ဒီအတွက် အသုံးပြုသူတွေကလည်း နည်းပညာတွေကို ပိုင်နိုင်အောင် လေ့လာလေ့ကျင့်ထားဖို့လိုအပ်ပါတယ်။ နောက်တစ်ခု F1 မှာပြိုင်နေတဲ့ ကားတွေဟာလည်း သာမန်လမ်းတွေမှာ မောင်းလို့မလွယ်နိုင်ပါဘူး။ အဲ့ဒီလိုပဲ Application တိုင်းမှာ နာမည်ကြီး Framework တွေ၊ နည်းပညာတွေနဲ့ ဖြစ်ချင်မှဖြစ်မှာပါ။ ဘယ်နေရာမှာဘာကိုသုံးသင့်တယ်ဆိုတာ ဘာတွေကဘယ်လိုရှိတယ်ဆိုတာကို မသိပဲနဲ့ မဆုံးဖြတ်နိုင်ဘူးလို့ထင်ပါတယ်။
အဲ့ဒီအတွက် ဒီအိုင်တီလောကထဲကို ဝင်ချင့်တဲ့ လူငယ်များကို အကြံပေးပါဟုဆိုလျှင်၊ စာဖတ်အားကောင်းပါစေ လို့ပြောချင်ပါသည်။ များများဖက်၊ များများလေ့လာပြီး အကောင်းဆုံး Code များကိုရေသားရင်း ပီတိဝေနိုင်ကြပါစေ။
ကျွှန်တော်မှတ်မိပါသေးသည်။ ဤစကားလုံး Polymorphism အကြောင်းကို စသိခဲ့သည်မှာ ၁၀တန်း ဇီဝဗေဒဘာသာ သင်ခန်းစာ စာအုပ်ထဲမှဖြစ်ပါသည်။ Ameba များ၏ ပုံစံအမျိုးမျိုးပြောင်းလည်းနိုင်ပုံကို Polymorphic ဟုသုံးနှုန်းထားခြင်းဖြစ်၏။
Java နဲ့ OOP တွင် ဤစကားလုံးကို ပြန်ကြားရသောအခါ၊ ဘယ်လိုလုပ်မှာလဲ ဟုစဉ်းစားခဲ့မိပါသည်။ ဤအခန်းသည် နည်းနည်းလည်းရှုပ်၍၊ အသုံးလည်းဝင်ပါသဖြင့် ကျွှန်တော်တို့ Polymorphism ရဲ့ သဘောတရားနဲ့၊ Java က Polymorphism ကို ဘယ်လိုပုံဖော်နေတယ်ဆိုတာကို အသေအချာ လေ့လာမှတ်သားထားဖို့ လိုအပ်ပေသည်။
လွယ်လွယ်နှင့် အဓိပ္ပါယ်ဖွင့်ရလျှင် လုပ်ဆောင်ချက်များမှာတူညီပေမယ့်၊ ကွဲပြားသောလုပ်ရပ်များကို Polymorphism ဟုခေါ်သည် ဟုဆိုနိုင်ပါသည်။ ဥမမာအားဖြင့် အောက်ပါပုံပါအတိုင်း ခွေးတစ်ကောင်ကို စကားပြောပါဟုပြောလျှင် ဝုတ်ဝုတ် ဟုအသံထွက်သလို၊ ကြောင်တစ်ကောင်သည် ညှောင်ညှောင်ဟု အသံထွက်ပါလိမ့်မည်။ ဤကဲ့သို့သော ပုံစံအမျိုးမျိုးကွဲပြားပုံကို Polymorphism ဟုခေါ်ပါသည်။
ဟုတ်ပြီ၊ ကျွှန်တော်တို့ Java ဘက်ကနေပြန်စဉ်းစားကြည့်ကြရအောင်။ Java မှာ လုပ်ဆောင်ချက်များကို method နဲ့ ရေးသားပုံဖော်နေပါသဖြင့်၊ တူညီသော Method တစ်ခုဖြင့်၊ မတူညီသောလုပ်ဆောင်ချက်များကို လုပ်ဆောင်ပေးနိုင်ခြင်းဟု အဓိပ္ပါယ်ရပါလိမ့်မည်။ ကျွှန်တော်တို့ လက်တွေ့ ရေးကြည့်ကြရအောင်။
Poly1.java
public class Poly1 { static void getName() { System.out.println("I am MinLwin"); } static void getName(String name) { System.out.println("I am " + name); } public static void main(String [] args) { getName(); getName("Chaw Su"); } }
အထက်ပါ Poly1.java ကို ကွန်ပိုင်းလုပ်ပြီး၊ အလုပ်လုပ်ခိုင်းကြည့်ပါက အောက်ပါအတိုင်း အလုပ်လုပ်မည်ဖြစ်သည်။ getNameဆိုတဲ့ လုပ်ဆောင်ချက်တစ်ခုတည်းမှ အဖြေနှစ်ခုရနေသည်ကို တွေ့မြင်ရပေမည်။ အဲ့ဒီအတွက် Polymorphism ကို အသုံးပြုနေသည်ကို တွေ့ရပေမည်။
သေသေချာချာစဉ်းစားကြည့်ပါက Overload နှင့်ဘာမှမကွာပေ။ ဤသို့ဆိုလျှင် Polymorphism ကိုအသုံးပြုတဲ့ အကျိုးဘာများရှိပါဦးမည်နည်း။ Polymorphism ၏အကျိုးကျေးဇူးများတွင် အမည်တူကိုအသုံးပြုခြင်းအားဖြင့်၊ အမည်အမျိုးမျိုးကိုမှတ်စရာမလိုခြင်း၊ တဖန် အမည်တစ်မျိုးတည်းကိုသာ အသုံးပြုပါသဖြင့် အမှားနည်းပါးစေခြင်း အစရှိတဲ့ ကျေးဇူးများလည်းပါဝင်ပေသည်။ သို့ရာတွင် အမည်တူကိုမသုံးပါလျှင် အဓိပ္ပါယ်မရှိပါ။
Abstract Method and Abstract Class
ဤနေရာတွင် Java ဘာသာရပ်၌၊ abstract method (တကယ်မရှိပေမယ့် ရှိသင့်တဲ့လုပ်ဆောင်ချက်များ) နဲ့ Override ကို အသုံးပြုခြင်းအားဖြင့် Polymorphism ရဲ့ သဘောတရားတွေကို အပြည့်အဝရရှိစေရန် စီစဉ်ထားပေသည်။ ကျွှန်တော်တို့ abstract class တစ်ခုဖြစ်တဲ့Pet ထဲမှာ လိုအပ်တဲ့ လုပ်ဆောင်ချက်ဟာ greet() ရှိကြောင်း abstract method တစ်ခုဖြစ်တဲ့ abstract void greet();ဟုရေးသားထားပါတယ်။ အဲ့ဒီအတွက် Pet class ကို အမွေဆက်ခံမည့် Class တွေမှာ ရှိသင့်တဲ့ လုပ်ဆောင်ချက် greet() ကို ရေးသားဖို့လိုအပ်ပါလိမ့်မည်။
တဖန် Cat နဲ့ Dog ကို Pet ရဲ့ အမွေဆက်ခံစေပြီးgreet() လုပ်ဆောင်ချက်ကို overrideလုပ်ပြီး ရေးသားစေပါတယ်။
Poly2.java
public class Poly2 { static abstract class Pet { abstract void greet(); } static class Cat extends Pet { void greet() { System.out.println("Meow"); } } static class Dog extends Pet { void greet() { System.out.println("Woof"); } } public static void main(String [] args) { Pet dog = new Dog(); Pet cat = new Cat(); dog.greet(); cat.greet(); } }
ဤကဲ့သို့ ရှိသင့်တဲ့ Object ရဲ့ ပုံစံကို abstract class မှာသက်မှတ်ခြင်းအားဖြင့် အမျိုးတူ Object အစုအဝေးများကို ရေးသားနိုင်မှာဖြစ်ပါတယ်။
Interface နှင့် Polymorphism
Abstract Method နဲ့ Override ကို အသုံးပြုခြင်းအားဖြင့် Polymorphism ကို ပုံဖော်နိုင်ကြောင်းဖော်ပြခဲ့ပြီးဖြစ်သည်။ သို့ရာတွင် Java ၏အမွေဆက်ခံမှု့တွင် ပြဿနာတစ်ခုရှိပါသေးသည်။ ထိုအရာမှာ တစ်ခုတည်းသော Class မှသာ အမွေဆက်ခံနိုင်ခြင်း ဖြစ်၏။ အဲ့ဒီအတွက် ရှိသင့်တဲ့ လုပ်ဆောင်ချက်များကို အများအပြားအသုံးပြုလိုပါက အစကတည်းက Super Class တွင် ကြိုရေးထားဖို့လိုအပ်ပေမည်။ တဖန် ရှိတဲ့ ရှိသင့်တဲ့လုပ်ဆောင်ချက်များထဲမှ တချို့တစ်ဝက်ကိုသာ အသုံးပြုလိုသည့်အခါမှာလည်း ဒုက္ခများတက်ပေသည်။
ထိုအခါမျိုးတွင် အသုံးဝင်သည်မှာ Interface ဖြစ်ပေသည်။ Polymorphism ကိုလည်း ပုံဖော်ပေးရင်း၊ တစ်ခုတည်းသော Class မှ အမွေဆက်ခံနိုင်ခြင်း ပြဿနာကိုလည်းဖြေရှင်းပေးနိုင်ပါသည်။လိုအပ်သော လုပ်ဆောင်ချက်များကို ဖြည့်စွက်လိုပါက interface များကို အကြိမ်ကြိမ် ဖြည့်စွက်ခြင်းအားဖြင့် အသေးစိတ် Class ဒီဇိုင်းများကို ပုံဖော်နိုင်မှာဖြစ်ပါတယ်။
Poly3.java
public class Poly3 { static abstract class Cat { public abstract void getVoice (); } static interface Pet { public void getOwner(); } static class NyoKyee extends Cat implements Pet { @Override public void getVoice() { System.out.println("Meow"); } @Override public void getOwner() { System.out.println("Owner is Maung Maung."); } } public static void main(String [] args) { NyoKyee myCat = new NyoKyee(); myCat.getVoice(); myCat.getOwner(); } }
ပြန်လည်သုံးသပ်ချက်
ကျွှန်တော်တို့ ဤအခန်းတွင် Polymorphism ဆိုတာဘာလဲ။ ပြီးတော့ Java ဘက်ကကြည့်တဲ့ Polymorphism ဆိုတာဘာလဲ။ Polymorphism ရဲ့ အကျိုးသက်ရောက်မှု့တွေ မှာဘာတွေရှိသလဲ။ Java နဲ့ Polymorphism ကို ဘယ်လိုပုံဖော်နိုင်သလဲဆိုတာကို အဓိကထား၍ဖော်ပြခဲ့သည်။
Polymorphism ဆိုသည်မှာ အမည်တူလုပ်ဆောင်ချက်တွေဖြင့်၊ မတူညီသောရလဒ်များကို ရရှိစေခြင်းဟုအဓိပ္ပါယ်ဖွင့်နိုင်ပါသည်။ ဤကဲ့သို့ အမည်တူ လုပ်ဆောင်ချက်များကို အသုံးပြုခြင်းအားဖြင့် မှတ်ရလွယ်ကူစေခြင်း၊ အမှားနည်းပါးစေခြင်း အစရှိတဲ့ အကျိုးကျေးဇူးများအပြင်၊ လိုအပ်တဲ့လုပ်ဆောင်ချက်များကို Super Class မှ အမွေဆက်ခံပြီး၊ ပြောင်းပြီးရေးသားလိုတဲ့ လုပ်ဆောင်ချက်များကိုသာ Override လုပ်ခြင်းအားဖြင့် Class အုပ်စုများကို ဖွဲ့စည်းနိုင်ကြောင်း အစရှိတဲ့ အကျိုးကျေးဇူးများကို ရရှိစေနိုင်ပါတယ်။
တဖန် Java တွင် Polymorphism ကို ပုံဖော်နိုင်ရန် Overload, Override, Abstract Class and Method နဲ့ Interface များကို အသုံးပြုနိုင်ကြောင်း ဖော်ပြခဲ့၏။
ဘာသာရပ်တွေ၊ သဘောတရားတွေ၊ Framework တွေ နဲ့ နည်းပညာများသည် ကရိယာများသာဖြစ်ကြသည်။ အသုံးပြုမည့်သူမှာ ရေးသားသူကိုယ်တိုင်ဖြစ်သည်။ ကရိယာတွေဘယ်လောက်ကောင်းကောင်း အနှစ်သာရမရှိလျှင် Application တစ်ခုဟာ အသုံးတည့်မှာမဟုတ်ပါဘူး။ F1 ကားပြိုင်ပွဲကို ကြည့်စေလိုပါသည်။ အကောင်းဆုံးစက်တွေနဲ့ အမြင့်မားဆုံး အမြန်ကို ပြိုင်ဆိုင်နေကြသည်။ စက်တွေရဲ့ လုပ်ဆောင်နိုင်အားသည် အဲ့ဒီလောက်မကွာကြပါ။ ဒါပေမယ့် ကားမောင်းသူရဲ့ သဘာနဲ့ အနိုင်အရှုန်းဟာ စကားပြောစေပါတယ်။
အဲ့ဒီအတွက် အသုံးပြုသူတွေကလည်း နည်းပညာတွေကို ပိုင်နိုင်အောင် လေ့လာလေ့ကျင့်ထားဖို့လိုအပ်ပါတယ်။ နောက်တစ်ခု F1 မှာပြိုင်နေတဲ့ ကားတွေဟာလည်း သာမန်လမ်းတွေမှာ မောင်းလို့မလွယ်နိုင်ပါဘူး။ အဲ့ဒီလိုပဲ Application တိုင်းမှာ နာမည်ကြီး Framework တွေ၊ နည်းပညာတွေနဲ့ ဖြစ်ချင်မှဖြစ်မှာပါ။ ဘယ်နေရာမှာဘာကိုသုံးသင့်တယ်ဆိုတာ ဘာတွေကဘယ်လိုရှိတယ်ဆိုတာကို မသိပဲနဲ့ မဆုံးဖြတ်နိုင်ဘူးလို့ထင်ပါတယ်။
အဲ့ဒီအတွက် ဒီအိုင်တီလောကထဲကို ဝင်ချင့်တဲ့ လူငယ်များကို အကြံပေးပါဟုဆိုလျှင်၊ စာဖတ်အားကောင်းပါစေ လို့ပြောချင်ပါသည်။ များများဖက်၊ များများလေ့လာပြီး အကောင်းဆုံး Code များကိုရေသားရင်း ပီတိဝေနိုင်ကြပါစေ။
fantatic post mate, your picture made everything clear. In my opinion polymorphism is great and if used correctly it gives you immense capability to write flexible and extensible code
ReplyDeletehere are few benefits of polymorphism in my opinion:
1) Runtime binding using method overridding.
2) Defining interface and providing implementation which can work with those interface.
3) writing code for interfaces and not for implementation.
By the way I have also shared my experience as What is polymorphism in Java , let me know how do you find it
Magnificent web site. Plenty of useful info here.
ReplyDeleteI'm sending it to some pals ans additionally sharing in delicious.
And naturally, thank you to your sweat!