Polymorphism (from Greek, meaning “many forms”) is the ability of an object to take different forms and thus, depending upon the context, to respond to the same message in different ways.
Take the example of a chess game; a chess piece can take many forms, like bishop, castle, or knight and all these pieces will respond differently to the move message
بيفيدني اني بقدر أعمل Single action in a different ways ودا بيخلي فيه Interface واحد بيعمل أكتر من حاجة ودا بيساعد برضو في فكرة ال Encapsulation ان تفاصيل الشغل بتبقا مستخبية شوية
فيه مبدأين أساسيين فيها وهما:
Method Overriding
الأب بيبقا فيه صفة معينة أو method معينة زي صفة الحركة بس الصفة دي متشابهة في الاسم بس مع الابن بس بصفات تانية وبتشتغل بطريقة تانية
بغير كل حاجة جواه مش هتبقا متشابهه غير في الإسم
نفس الFunction بنفس الاسم بس في كل Class بيعمل حاجة مختلفة على حسب ال Object اللي هو معمول منها
Method Overloading
وجود نفس ال Function في نفس الclass بنفس الاسم (متكرر)
مش بيأثر على الـ Memory هو بس يخلي الكود Readable و Reusable
بنفرقه عن طريق ال Parameters اللي بياخدها كل واحدة عن التانية، وكل واحد هيقوم بحاجة مختلفة شوية عن الباقي
def Sum(int x, int y): return x + ydef Sum (int x, int y, int z): return x + y + zdef Sum (float x, float y): return x + y
تخيل اني بعمل كل واحدة من دول باسم مختلف عن التاني فهيخلي الكود معقد قد ايه، مع ان كلهم بيعملوا نفس الحاجة انهم بيجمعوا فمش هعرف أفتكر كل الأسماء وهيصعب الكود وقرائة الكود وكل حاجة
Sum2Ints(int x, int y): return x + ySum3Ints(int x, int y, int z): return x + y + zSumFloat(float x, float y): return x + y