وراثت
وراثت به یک کلاس اجازه میدهد که خصوصیات یا متدهایی را از کلاس دیگر به ارث برد. وراثت مانند رابطه پدر و پسری میماند به طوریکه فرزند خصوصیاتی از قبیل قیافه و رفتار را از پدر خود به ارث برده باشد.
همه متد و خصوصیات کلاس پایه میتوانند در کلاس مشتق مورد استفاده قرار بگیرند به استثنای اعضا و متدهای با سطح دسترسی 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 آن را میتواند برای خود داشته باشد.