ইনহেরিটেন্স এবং extends কীওয়ার্ড

TypeScript অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) - টাইপস্ক্রিপ্ট (Typescript) - Web Development

289

TypeScript এ ইনহেরিটেন্স (inheritance) এর মাধ্যমে একটি ক্লাস অন্য ক্লাসের বৈশিষ্ট্য এবং মেথড গ্রহণ করতে পারে। এটি object-oriented programming (OOP) এর একটি মৌলিক ধারণা যা কোড পুনরায় ব্যবহারযোগ্য এবং একাধিক ক্লাসের মধ্যে সম্পর্ক তৈরি করে।

TypeScript এ ইনহেরিটেন্সে extends কীওয়ার্ড ব্যবহার করা হয়। এটি ব্যবহার করে আপনি একটি ক্লাসের সমস্ত বৈশিষ্ট্য (properties) এবং পদ্ধতি (methods) অন্য একটি ক্লাসে উত্তরাধিকার (inherit) করতে পারেন।


১. ক্লাস এবং ইনহেরিটেন্সের ধারণা

একটি ক্লাসের বৈশিষ্ট্য এবং মেথডকে অন্য একটি ক্লাসে উত্তরাধিকারী করে নিতে, আপনি extends কীওয়ার্ড ব্যবহার করতে পারেন।

উদাহরণ:

class Animal {
  name: string;

  constructor(name: string) {
    this.name = name;
  }

  makeSound(): void {
    console.log(`${this.name} makes a sound.`);
  }
}

class Dog extends Animal {
  breed: string;

  constructor(name: string, breed: string) {
    super(name); // Animal ক্লাসের constructor কল করা হচ্ছে
    this.breed = breed;
  }

  bark(): void {
    console.log(`${this.name} barks.`);
  }
}

const dog = new Dog("Buddy", "Golden Retriever");
dog.makeSound(); // Animal ক্লাসের মেথড
dog.bark(); // Dog ক্লাসের মেথড

এখানে:

  • Dog ক্লাসটি Animal ক্লাস থেকে ইনহেরিট করেছে, অর্থাৎ Dog ক্লাস Animal ক্লাসের সমস্ত বৈশিষ্ট্য এবং মেথড গ্রহণ করেছে।
  • super() ব্যবহার করে প্যারেন্ট ক্লাস (এখানে Animal) এর কনস্ট্রাক্টর কল করা হয়েছে।
  • Dog ক্লাসে নতুন একটি মেথড bark() যোগ করা হয়েছে যা Animal ক্লাসে নেই।

২. super() কীওয়ার্ড

super() কীওয়ার্ডটি প্যারেন্ট ক্লাসের কনস্ট্রাক্টর এবং মেথডকে কল করার জন্য ব্যবহৃত হয়। যখন একটি ক্লাস অন্য ক্লাসকে extends করে, তখন প্যারেন্ট ক্লাসের কনস্ট্রাক্টরকে কল করার জন্য super() ব্যবহার করা হয়।

উদাহরণ:

class Person {
  name: string;
  
  constructor(name: string) {
    this.name = name;
  }
  
  greet(): void {
    console.log(`Hello, ${this.name}`);
  }
}

class Employee extends Person {
  position: string;

  constructor(name: string, position: string) {
    super(name); // Person ক্লাসের কনস্ট্রাক্টর কল
    this.position = position;
  }

  work(): void {
    console.log(`${this.name} is working as a ${this.position}.`);
  }
}

const employee = new Employee("John", "Developer");
employee.greet();  // Person ক্লাসের মেথড
employee.work();   // Employee ক্লাসের মেথড

এখানে:

  • Employee ক্লাস Person ক্লাস থেকে ইনহেরিট করেছে।
  • super(name) ব্যবহার করে Person ক্লাসের কনস্ট্রাক্টর কল করা হয়েছে।

৩. সুপার ক্লাসের মেথড এবং প্রপার্টি অ্যাক্সেস

ইনহেরিটেন্স ব্যবহারের সময়, আপনি প্যারেন্ট ক্লাসের মেথড এবং প্রপার্টি সিবলিং ক্লাসে অ্যাক্সেস করতে পারেন। তবে, কখনও কখনও আপনি প্যারেন্ট ক্লাসের মেথড বা প্রপার্টি মডিফাই করতে চাইলে super কীওয়ার্ড ব্যবহার করতে পারেন।

উদাহরণ:

class Car {
  brand: string;
  
  constructor(brand: string) {
    this.brand = brand;
  }

  drive(): void {
    console.log(`${this.brand} car is driving.`);
  }
}

class ElectricCar extends Car {
  batteryLife: number;

  constructor(brand: string, batteryLife: number) {
    super(brand); // Car ক্লাসের কনস্ট্রাক্টর কল
    this.batteryLife = batteryLife;
  }

  drive(): void {
    console.log(`${this.brand} electric car is driving silently.`);
  }

  checkBattery(): void {
    console.log(`Battery life: ${this.batteryLife} hours.`);
  }
}

const tesla = new ElectricCar("Tesla", 12);
tesla.drive(); // ElectricCar ক্লাসের মেথড
tesla.checkBattery(); // ElectricCar ক্লাসের নতুন মেথড

এখানে:

  • ElectricCar ক্লাসটি Car ক্লাস থেকে ইনহেরিট করেছে।
  • ElectricCar ক্লাসের drive() মেথড Car ক্লাসের drive() মেথডকে ওভাররাইড করেছে (Method Overriding)।
  • checkBattery() একটি নতুন মেথড যা ElectricCar ক্লাসে যোগ করা হয়েছে।

৪. মেথড ওভাররাইডিং (Method Overriding)

TypeScript এ আপনি প্যারেন্ট ক্লাসের মেথডকে কনটেক্সটের ভিত্তিতে কাস্টমাইজ করতে পারেন। এটি মেথড ওভাররাইডিং বলে পরিচিত।

উদাহরণ:

class Animal {
  sound(): void {
    console.log("Some generic animal sound");
  }
}

class Cat extends Animal {
  sound(): void {
    console.log("Meow");
  }
}

const cat = new Cat();
cat.sound();  // "Meow"

এখানে, Cat ক্লাসে sound() মেথডটি Animal ক্লাসের sound() মেথডকে ওভাররাইড করেছে।


৫. মাল্টিপল ইনহেরিটেন্স (Multiple Inheritance)

TypeScript সরাসরি মাল্টিপল ইনহেরিটেন্স সমর্থন করে না (যেখানে একাধিক ক্লাস একসাথে ইনহেরিট করতে পারে)। তবে আপনি ইন্টারফেস ব্যবহার করে একাধিক ইনহেরিটেন্স সিমুলেট করতে পারেন।

উদাহরণ:

interface Flyer {
  fly(): void;
}

interface Swimmer {
  swim(): void;
}

class Duck implements Flyer, Swimmer {
  fly(): void {
    console.log("Duck is flying");
  }

  swim(): void {
    console.log("Duck is swimming");
  }
}

const duck = new Duck();
duck.fly();   // Duck is flying
duck.swim();  // Duck is swimming

এখানে, Duck ক্লাস দুটি ইন্টারফেস Flyer এবং Swimmer কে ইমপ্লিমেন্ট করেছে, যা মাল্টিপল ইনহেরিটেন্সের মতো কাজ করছে।


সারাংশ

  • extends কীওয়ার্ড ব্যবহার করে একটি ক্লাস অন্য একটি ক্লাস থেকে ইনহেরিট করতে পারে।
  • super() প্যারেন্ট ক্লাসের কনস্ট্রাক্টর বা মেথড কল করতে ব্যবহৃত হয়।
  • মেথড ওভাররাইডিং এবং ইন্টারফেস TypeScript এ ইনহেরিটেন্সের শক্তিশালী ফিচার।
Content added By
Promotion

Are you sure to start over?

Loading...