1. Inheritance (الوراثة)
الوراثة تعني ان كلاس جديد يرث خصائص ودوال من كلاس اخر .
✅ مثال:
عندك كلاس Animal فيه دالة makeSound().
لو انشات كلاس Dog يرث من Animal، فانه يحصل تلقائيًا على دالة makeSound().
🔹 الفائدة: اعادة استخدام الكود وتوفير الوقت.
⸻
2. Encapsulation (الكبسلة / التغليف)
هي اخفاء تفاصيل الكود الداخلية والسماح بالوصول فقط عبر واجهات محددة (getters & setters).
✅ مثال:
لو عندك كلاس BankAccount فيه balance ما تخلي الناس يعدلونه مباشرة
لكن توفر دالة deposit() او getBalance().
🔹 الفائدة: حماية البيانات والتحكم في كيفية الوصول لها.
⸻
3. Abstraction (التجريد)
تعني انك تظهر فقط المهم للمستخدم وتخفي التفاصيل المعقدة.
✅ مثال:
عندك كلاس Car فيه دالة drive().
المستخدم ما يحتاج يعرف كيف تشتغل المحركات من الداخل فقط يستخدم drive().
🔹 الفائدة: تقليل التعقيد والتركيز على ما هو مهم.
⸻
4. Polymorphism (تعدد الاشكال)
يعني ان نفس الدالة او المتغير قد يعمل بطرق مختلفة حسب السياق.
✅ مثال:
دالة makeSound() تعمل بشكل مختلف في Dog وCat
مع انها بنفس الاسم وموجودة في الكلاس الاساسى Animal.
🔹 الفائدة: المرونة في كتابة الكود واستخدامه.