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

 

আমরা জাভাস্ক্রিপ্টে prototypical ইনহেরিট্যান্স নিয়ে জেনেছি। আজ আমরা মাল্টি লেভেল ইনহেরিট্যান্স নিয়ে আলোচনা করব। আমরা জিনিসটা এইভাবে চিন্তা করতে পারি, আমাদের দাদার থেকে আমাদের বাবা সম্পতি পেয়েছে, আবার আমাদের বাবার সম্পত্তি আমরা পাবো। মাল্টি লেভেল ইনহেরিট্যান্সও তাই। আমরা প্রথমে প্রোটোটাইপ চেইন ব্যবহার করে মাল্টি লেভেল ইনহেরিট্যান্স দেখব। তারপর জাভাস্ক্রিপ্ট ক্লাস দিয়ে একই জিনিস করব।

/*
আমরা এখানে জাভাস্ক্রিপ্টের প্রোটোটাইপ চেইন ব্যবহার করে মাল্টি লেভেল ইনহেরিট্যান্স ইমপ্লিমেন্ট করেছি।
*/

let grandfather = {
   grandfatherProperty : function(){
     console.log("Grandfather's property")
   }
}

let father = {
   __proto__ : grandfather,
   fatherProperty : function(){
     console.log("Father's property")
   }
}

let son = {
   __proto__ : father,
   sonProperty : function(){
     console.log("Son's Property")
   }
}

son.grandfatherProperty();          // আউটপুটঃ Grandfather's property

 

উপরের কোডটি খেয়াল করি। prototypical ইনহেরিট্যান্স সম্পর্কে জানলে জিনিসটা আমাদের খুবই সহজ। যারা জানেন না তাদেরকে prototypical ইনহেরিট্যান্স সম্পর্কে দেখে আসতে বলব। উপরের কোডটিতে father অবজেক্ট grandfather এর সবকিছু ইনহেরিট করে, আবার son অবজেক্ট father অবজেক্টের সবকিছু ইনহেরিট করে। কাজেই, son অবজেক্ট থেকে চাইলেই father এবং grandfather এর সবকিছু এক্সেস করা যাবে।

আমরা এতক্ষণ প্রোটোটাইপ চেইন ব্যবহার করে মাল্টি লেভেল ইনহেরিট্যান্স সম্পর্কে জানলাম। এখন আমরা একই জিনিস ES6 ক্লাস দিয়ে দেখব।
আমরা জানি, জাভাস্ক্রিপ্টে প্যারেন্ট ক্লাস থেকে ইনহেরিট করার জন্য চাইল্ড ক্লাসকে এক্সটেন্ড করতে হয়। তাহলে প্যারেন্ট ক্লাসের পাবলিক আর প্রোটেক্টেড প্রোপার্টিগুলা চাইল্ড ক্লাসও পেয়ে যায়।

class Grandfather {
   grandfatherProperty(){
     console.log("Grandfather's property")
   }
}

class Father extends Grandfather {
   fatherProperty(){
     console.log("Father's property")
   }
}

class Son extends Father {
   sonsProperty(){
     console.log("Son's property")
   }
}

const son = new Son();
son.grandfatherProperty()          // আউটপুটঃ Grandfather's property

 

দেখা যাচ্ছে, son নামের একটি instance তৈরি করা হয়েছে Son ক্লাস থেকে। এই অবজেক্টটি থেকে আমরা তার প্যারেন্ট এবং গ্র্যান্ডপ্যারেন্টের প্রপার্টি এক্সেস করতে পারছি। এটাই মাল্টি লেভেল ইনহেরিট্যান্স। আশা করি জাভাস্ক্রিপ্টে মাল্টি লেভেল ইনহেরিট্যান্স সম্পর্কে আমাদের ধারণা পরিষ্কার হয়েছে।