জেভাস্ক্রিপ্ট ক্লাস ইনহারিটেন্স

ক্লাস উত্তরসূরী

ক্লাস উত্তরসূরী তৈরির জন্য ব্যবহার করুন: extends কীভাবে:

ক্লাস উত্তরসূরীতে তৈরি করা ক্লাসগুলি অন্য ক্লাসের সমস্ত পদ্ধতিকে উত্তরসূরী করে:

প্রতিমান

একটি "Model" নামের ক্লাস তৈরি করুন যা "Car" ক্লাসের পদ্ধতিকে উত্তরসূরী হবে:

class Car {
  constructor(brand) {
    this.carname = brand;
  }
  present() {
    return 'I have a ' + this.carname;
  }
}
class Model extends Car {}}
  constructor(brand, mod) {
    super(brand);
    this.model = mod;
  }
  show() {
    return this.present() + ', it is a ' + this.model;
  }
}
let myCar = new Model("Ford", "Mustang");
document.getElementById("demo").innerHTML = myCar.show();

আপনার নিজেই চেষ্টা করুন

super() পদ্ধতি পিতৃকেন্দ্রিক ক্লাস:

constructor পদ্ধতিতে super() পদ্ধতি, আমরা পিতৃকেন্দ্রিক constructor পদ্ধতি আহ্বান করি, পিতৃকেন্দ্রিক বৈশিষ্ট্য এবং পদ্ধতির প্রবেশ অধিকার পান:

উত্তরসূরীতা কোড পুনর্ব্যবহারকে অত্যন্ত সহায়ক করে: নতুন ক্লাস তৈরি করার সময় সম্পূর্ণ ক্লাসের বৈশিষ্ট্য এবং পদ্ধতি পুনর্ব্যবহার করা:

Getter এবং Setter

ক্লাসও getter এবং setter ব্যবহার করতে পারে:

আপনার বৈশিষ্ট্যের জন্য getter এবং setter ব্যবহার করা বুদ্ধিমান: বিশেষ করে, যদি আপনি তাদের মান পুনরায় ফিরিয়ে দিতে চান বা তাদের মান সেট করার আগে কোনও বিশেষ কাজ করতে চান:

যদি আপনি ক্লাসে getter এবং setter যোগ করতে চান, তবে get এবং set কীভাবে:

প্রতিমান

getter এবং setter তৈরি করে "carname" বৈশিষ্ট্য:

class Car {
  constructor(brand) {
    this.carname = brand;
  }
  get cnam() {
    return this.carname;
  }
  set cnam(x) {
    this.carname = x;
  }
}
let myCar = new Car("Ford");
document.getElementById("demo").innerHTML = myCar.cnam;

আপনার নিজেই চেষ্টা করুন

মন্তব্য:যদিও getter একটি পদ্ধতি, আপনি বৈশিষ্ট্য মান পাওয়ার জন্য ব্র্যাকেট ব্যবহার করবেন না:

getter/setter পদ্ধতির নাম বৈশিষ্ট্য নামের সঙ্গে একই না হতে পারে, এই উদাহরণে carname

অনেক প্রোগ্রামার বৈশিষ্ট্য নামের আগে হাইফেন চিহ্ন (_)-এর ব্যবহার করে getter/setter-কে প্রকৃত বৈশিষ্ট্য থেকে আলাদা করে:

প্রতিমান

আপনি হাইফেন চিহ্ন (_)-এর মাধ্যমে getter/setter-কে প্রকৃত বৈশিষ্ট্য থেকে আলাদা করতে পারেন:

class Car {
  constructor(brand) {
    this._carname = brand;
  }
  get carname() {
    return this._carname;
  }
  set carname(x) {
    this._carname = x;
  }
}
let myCar = new Car("Ford");
document.getElementById("demo").innerHTML = myCar.carname;

আপনার নিজেই চেষ্টা করুন

setter ব্যবহার করতে, সমান সংজ্ঞায়িত গঠনকে ব্যবহার করুন, ব্র্যাকেট ছাড়াই:

প্রতিমান

সেটার মাধ্যমে গাড়ির নাম "Volvo"-এ পরিবর্তন করুন:

class Car {
  constructor(brand) {
    this._carname = brand;
  }
  get carname() {
    return this._carname;
  }
  set carname(x) {
    this._carname = x;
  }
}
let myCar = new Car("Ford");
myCar.carname = "Volvo";
document.getElementById("demo").innerHTML = myCar.carname;

আপনার নিজেই চেষ্টা করুন

Hoisting

ফাংশন এবং অন্যান্য JavaScript ঘোষণার থেকে ভিন্ন, শ্রেণী ঘোষণা হোইস্টিং হয় না。

এর মানে আপনাকে শ্রেণীটি ঘোষণা করার পরেই ব্যবহার করতে হবে:

প্রতিমান

//আপনি এখনও এই শ্রেণীটি ব্যবহার করতে পারবেন না。
//myCar = new Car("Ford")
//এটি একটি ত্রুটি উঠতে পারে。
class Car {
  constructor(brand) {
    this.carname = brand;
  }
}
//এখন আপনি এই শ্রেণীটি ব্যবহার করতে পারবেন:
let myCar = new Car("Ford")

আপনার নিজেই চেষ্টা করুন

মন্তব্য:অন্যান্য ঘোষণা, যেমন ফাংশন, ঘোষণার আগে ব্যবহার করার সময় ত্রুটি হবে না, কারণ JavaScript-এর ঘোষণার ডিফল্ট হোইস্টিং (ঘোষণা শীর্ষে সরানো) হয়。