ক্লাস বাড়ান

extends কীওয়ার্ডটি ক্লাস ডিক্লেয়ারেশন বা এক্সপ্রেশনে ব্যবহার করা হয় এমন একটি ক্লাস তৈরি করতে যা অন্য একটি সাবক্লাস হিসেবে কাজ করে, যার সাথে প্যারেন্ট ক্লাস (কখনও কখনও "বেস ক্লাস" বলা হয়) শিশু শ্রেণীর (কখনও কখনও "সাবক্লাস" বলা হয়) এর প্রোটোটাইপ হিসাবে কাজ করে। বা "উত্পন্ন শ্রেণী")।

class ParentClass {}
class ChildClass extends ParentClass {}

Object.getPrototypeOf( ChildClass );
> class ParentClass {}

এই সাবক্লাসগুলি প্যারেন্ট ক্লাসের বৈশিষ্ট্য এবং পদ্ধতির উত্তরাধিকারী হয়। এটি আপনাকে প্রতিটি সম্ভাব্য ব্যবহারের ক্ষেত্রে প্যারেন্ট ক্লাসকে ওভারলোড না করে আরও নির্দিষ্ট উদ্দেশ্যগুলি পরিবেশন করার জন্য একটি ক্লাসের মূল কার্যকারিতা প্রসারিত করতে দেয়, বা একই উদ্দেশ্যে কাজ করে এমন কোড পুনরায় প্রয়োগ করা।

শিশু শ্রেণীগুলি একটি অভিভাবক শ্রেণীর থেকে উত্তরাধিকারসূত্রে প্রাপ্ত পদ্ধতিগুলির নিজস্ব বাস্তবায়ন প্রদান করতে পারে:

class MyClass {
  constructor( myPassedValue ) {
    this.instanceProp = myPassedValue;
  }
  classMethod() {
    console.log( `The value was '${ this.instanceProp }.'`)
  }
}
class ChildClass extends MyClass {
  classMethod() {
    console.log( `The value was '${ this.instanceProp },' and its type was '${ typeof this.instanceProp }.'`)
  }
}

const myParentClassInstance = new MyClass( "My string." );
const mySubclassInstance = new ChildClass( 100 );

myParentClassInstance.classMethod();
> "The value type was 'string.'"

mySubclassInstance.classMethod();
> "The value was '100,' and its type was 'number.'"

আপনি super ব্যবহার করে চাইল্ড ক্লাসের প্রসঙ্গে অভিভাবক শ্রেণিতে সংজ্ঞায়িত পদ্ধতিগুলিকে কল করতে পারেন:

class MyClass {
  constructor( myPassedValue ) {
    this.instanceProp = myPassedValue;
  }
  classMethod() {
    console.log( `The value was '${ this.instanceProp }.'`)
  }
}

class ChildClass extends MyClass {
  subclassMethod() {
    super.classMethod();
    console.log( `The value type was '${ typeof this.instanceProp }.'`)
  }
}
const mySubclassInstance = new ChildClass( 100 );

mySubclassInstance.subclassMethod();
> The value was '100.'
> The value type was 'number.'

পূর্ববর্তী উদাহরণগুলিতে দেখা গেছে, যখন একটি শিশু শ্রেণীর প্রেক্ষাপটে constructor() পদ্ধতিটি বাদ দেওয়া হয়, তখন জাভাস্ক্রিপ্টের অন্তর্নিহিত কন্সট্রাক্টর একই আর্গুমেন্টের সাথে প্যারেন্ট কনস্ট্রাক্টরকে কল করে। যাইহোক, যদি সাবক্লাসে কোন কনস্ট্রাক্টর থাকে, তাহলে this উল্লেখ করার আগে প্রথমে super() যেকোনো প্রয়োজনীয় আর্গুমেন্ট সহ কল ​​করতে হবে।

class MyClass {
  constructor( myPassedValue ) {
    this.instanceProp = myPassedValue;
  }
  classMethod() {
    console.log( `The value was '${ this.instanceProp }.'`)
  }
}

class ChildClass extends MyClass {
    constructor( myPassedValue ) {
        super( myPassedValue );
        this.modifiedProp = myPassedValue + 50;
    }\
    subclassMethod() {
        super.classMethod();
        console.log( `The value type was '${ typeof this.instanceProp }.'`)
    }
}
const mySubclassInstance = new ChildClass( 100 );

mySubclassInstance;
> MyClass { instanceProp: 100, modifiedProp: 150 }

Getters এবং setters হল বিশেষ পদ্ধতি যা যথাক্রমে পুনরুদ্ধার এবং সংজ্ঞায়িত করার জন্য একচেটিয়াভাবে ব্যবহৃত হয়। get এবং set কীওয়ার্ড ব্যবহার করে সংজ্ঞায়িত পদ্ধতিগুলি আপনাকে এমন পদ্ধতি তৈরি করতে দেয় যেগুলির সাথে ইন্টারঅ্যাক্ট করা যেতে পারে যেন সেগুলি স্ট্যাটিক বৈশিষ্ট্য।

class MyClass {
    constructor( originalValue ) {
        this.totalValue = 0;
    }
    set doubleThisValue( newValue ) {
        this.totalValue = newValue * 2;
    }
    get currentValue() {
        console.log( `The current value is: ${ this.totalValue }` );
    }
}
const myClassInstance = new MyClass();

myClassInstance;
> MyClass { totalValue: 0 }

myClassInstance.doubleThisValue = 20;

myClassInstance.currentValue;
> The current value is: 40

get এবং set বৈশিষ্ট্যগুলি ক্লাসের প্রোটোটাইপ সম্পত্তিতে সংজ্ঞায়িত করা হয় এবং তাই ক্লাসের সমস্ত উদাহরণের জন্য উপলব্ধ।

আপনার উপলব্ধি পরীক্ষা করুন

extends কীওয়ার্ড দিয়ে তৈরি ক্লাস সম্পর্কে সত্য বিবৃতি নির্বাচন করুন।

এটি প্রসারিত ক্লাসের সন্তান হিসাবে কাজ করে।
এটি এর মূল শ্রেণীর বৈশিষ্ট্য এবং পদ্ধতিগুলি উত্তরাধিকার সূত্রে প্রাপ্ত।
এটি প্রসারিত ক্লাসের অভিভাবক হিসাবে কাজ করে।
It can't overwrite methods from a parent class.