يعني إيه؟
لو عندك موظف وجيت تجيب بديله، لازم البديل يقدر يعمل نفس الشغل!
مينفعش البديل يقول "أنا مش بعرف أعمل ده!" 🔄
لو عندك function بتستقبل Bird، لازم تشتغل صح مع أي نوع من الطيور.
البطريق "طائر" بيولوجياً، بس مش بيطير! الكود هيـ crash لما يستدعي fly() 💥
نفصل FlyingBird عن NonFlyingBird!
class Bird {
fly() { return "Flying!"; }
}
class Penguin extends Bird {
fly() {
// ❌ البطريق مش بيطير!
throw new Error("I can't fly!");
}
}
// 💥 هيـ crash!
function makeBirdFly(bird) {
return bird.fly();
}
makeBirdFly(new Penguin());
class Bird {
eat() { return "Eating..."; }
}
class FlyingBird extends Bird {
fly() { return "Flying!"; }
}
class NonFlyingBird extends Bird {
walk() { return "Walking..."; }
}
class Eagle extends FlyingBird {}
class Penguin extends NonFlyingBird {
swim() { return "Swimming!"; }
}