Skip to Content

đŸ”ļ Polymorphism (āĻĒāϞāĻŋāĻŽāϰāĻĢāĻŋāϜāĻŽ)

📖 āϏāĻ‚āĻœā§āĻžāĻž:

Polymorphism āĻŽāĻžāύ⧇ āĻšāϞ⧋ “āĻāĻ•āχ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ, āĻ­āĻŋāĻ¨ā§āύ āφāϚāϰāĻŖâ€āĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻāĻ•āϟāĻŋ āĻŦ⧇āϏ āĻ•ā§āϞāĻžāϏ āĻĨ⧇āϕ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϏāĻžāĻŦāĻ•ā§āϞāĻžāϏ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻāĻ•āχ āĻŽā§‡āĻĨāĻĄ āĻ­āĻŋāĻ¨ā§āύāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤

â˜‘ī¸ āĻ•āĻ–āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ?

  • āϝāĻ–āύ āφāĻŽāϰāĻž āϚāĻžāχ, āĻāĻ•āϟāĻžāχ āĻĢāĻžāĻ‚āĻļāύ āĻŦāĻž āĻŽā§‡āĻĨāĻĄ āĻ•āϞ āĻ•āϰāϞ⧇āχ context āĻ…āύ⧁āϝāĻžā§Ÿā§€ āφāϞāĻžāĻĻāĻž āφāωāϟāĻĒ⧁āϟ āĻĻāĻŋāĻ•āĨ¤
  • āϕ⧋āĻĄā§‡āϰ āĻĢā§āϞ⧇āĻ•ā§āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻ“ āϰāĻŋāχāωāĻœā§‡āĻŦāϞāĻŋāϟāĻŋ āĻŦāĻžā§œāĻžāύ⧋āϰ āϜāĻ¨ā§āϝāĨ¤

đŸ§Ē āωāĻĻāĻžāĻšāϰāĻŖ ā§§ – Sleep Time:

class Person { getSleep() { console.log(`I am sleeping for 8 hours per day`); } } class Student extends Person { getSleep() { console.log(`I am sleeping for 7 hours per day`); } } class Developer extends Person { getSleep() { console.log(`I am sleeping for 6 hours per day`); } } const getSleepingHours = (param: Person) => { param.getSleep(); // āϕ⧋āύ āĻ•ā§āϞāĻžāϏ⧇āϰ instance āĻĻāĻŋāĻšā§āϛ⧋, āϤāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰāĻŦ⧇ } const karim = new Person(); const rahim = new Student(); const hasan = new Developer(); getSleepingHours(karim); // I am sleeping for 8 hours per day getSleepingHours(rahim); // I am sleeping for 7 hours per day getSleepingHours(hasan); // I am sleeping for 6 hours per day

🔍 āĻāĻ–āĻžāύ⧇ getSleepingHours() āĻĢāĻžāĻ‚āĻļāύ Person āϟāĻžāχāĻĒ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ subclass āĻ…āύ⧁āϝāĻžā§Ÿā§€ āĻ­āĻŋāĻ¨ā§āύ āĻ­āĻŋāĻ¨ā§āύ āĻŽā§‡āϏ⧇āϜ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰāϛ⧇āĨ¤ āĻāϟāĻŋāχ āĻšāϞ⧋ Runtime PolymorphismāĨ¤


đŸ§Ē āωāĻĻāĻžāĻšāϰāĻŖ ⧍ – Shape Area:

class Shape { getArea(): number { return 0; } } class Circle extends Shape { constructor(public radius: number) { super(); } getArea(): number { return Math.PI * this.radius * this.radius; } } class Reactangle extends Shape { constructor(public height: number, public width: number) { super(); } getArea(): number { return this.height * this.width; } } const getShapeArea = (shape: Shape) => { console.log(shape.getArea()); } const round = new Circle(5); const box = new Reactangle(10, 20); getShapeArea(round); // 78.54... getShapeArea(box); // 200

🔍 āĻāĻ–āĻžāύ⧇ āĻāĻ•āχ getShapeArea() āĻĢāĻžāĻ‚āĻļāύ āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāϞāĻžāĻĻāĻž Shape āϟāĻžāχāĻĒ⧇āϰ āχāύāĻĒ⧁āϟ āĻ…āύ⧁āϝāĻžā§Ÿā§€ āφāϞāĻžāĻĻāĻž āĻĢāϞāĻžāĻĢāϞ āĻĻāĻŋāĻšā§āϛ⧇āĨ¤


✅ āϕ⧇āύ āĻĻāϰāĻ•āĻžāϰ?

  • āĻāĻ•āĻžāϧāĻŋāĻ• āϟāĻžāχāĻĒ⧇āϰ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāϕ⧇ āĻāĻ•āχāĻ­āĻžāĻŦ⧇ āĻŸā§āϰāĻŋāϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤
  • āĻāĻ•ā§āϏāĻŸā§‡āύāϏāĻŋāĻŦāϞ āĻ“ āĻŽāĻŋāĻ¨ā§āĻŸā§‡āύ⧇āĻŦāϞ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤

📌 āωāĻĒāĻ•āĻžāϰāĻŋāϤāĻž:

āϏ⧁āĻŦāĻŋāϧāĻžāĻŦā§āϝāĻžāĻ–ā§āϝāĻž
āϰāĻŋāχāωāĻœā§‡āĻŦāϞ āϕ⧋āĻĄāĻāĻ•āĻŦāĻžāϰ āĻĢāĻžāĻ‚āĻļāύ āϞāĻŋāϖ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϟāĻžāχāĻĒ⧇āϰ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžā§Ÿ
MaintainableāύāϤ⧁āύ āϟāĻžāχāĻĒ āϝ⧋āĻ— āĻ•āϰāϞ⧇āĻ“ āĻŽā§‚āϞ āϕ⧋āĻĄ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻšā§Ÿ āύāĻž
Dynamic behaviorāĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āϟāĻžāχāĻĒ āĻ…āύ⧁āϏāĻžāϰ⧇ runtime-āĻ āφāϞāĻžāĻĻāĻž āφāϚāϰāĻŖ āĻšā§Ÿ

Last updated on