وراثت

وراثت به یک کلاس اجازه می‌دهد که خصوصیات یا متدهایی را از کلاس دیگر به ارث برد. وراثت مانند رابطه پدر و پسری می‌ماند به طوریکه فرزند خصوصیاتی از قبیل قیافه و رفتار را از پدر خود به ارث برده باشد.

همه متد و خصوصیات کلاس پایه می‌توانند در کلاس مشتق مورد استفاده قرار بگیرند به استثنای اعضا و متدهای با سطح دسترسی private. مفهوم اصلی وراثت در مثال زیر نشان داده شده است :

 1: class classParent
 2: {      
 3: 
 4:     #privateField = "This is private Filed From Parent Class!";
 5: 
 6:            
 7:     publicMessage()
 8:     {
 9:        console.log("This is public Message From Parent Class!");
10:     }
11: }
12: 
13: class classChild extends classParent
14: {
15:     
16: }
17: 
18: var child = new classChild();
19: 
20: child.publicMessage();
21: //child.#privateField; Error : Private field '#privateField' must be declared in an enclosing class
This is public Message From Parent Class!

همانطور که مشاهده می‌کنید در کد بالا دو کلاس تعریف کرده‌ایم: یکی کلاس classParent (خطوط 11-1) که دارای یک فیلد با سطح دسترسی private و یک متد با سطح دسترسی public است و کلاس دیگر (خطوط 16-13) که در بدنه خود هیچ متد یا متغیری ندارد. نحوه ارث بری یک کلاس به صورت زیر است :

class Child extends Parent

که در خط 13 مشخص کرده‌ایم که کلاس classChild قرار است از کلاس classParent ارث بری کند:

class classChild extends classParent

در خط 13 یک نمونه از کلاس فرزند ایجاد می‌کنیم و در خط 20 متد کلاس پدر را فراخوانی می‌کنیم. همانطور که در خروجی مشاهده می‌کنید متدی که دارای سطح دسترسی public است فراخوانی و اجرا شده و پیغام چاپ می شود. حال اگر خط 21 را از حالت توضیحات خارج کنیم، یعنی علامت // را حذف و برنامه را دوباره اجرا کنیم با خطا مواجه می شویم. چون دسترسی به اعضای private در خارج از کلاس مربوطه شان و یا توسط کلاس مشتق شده، امکان پذیر نیست. در پایان یادآور می‌شویم که کلاس فرزند (خطوط 16-13) هیچ متد یا متغیری در بدنه خود ندارد، ولی چون از کلاس classParent ارث بری کرده است متد با سطح دسترسی public آن را می‌تواند برای خود داشته باشد.