تعداد بازدید: 87

سازنده در جاوا (constructor)

برای دانلود ویدئو روی دکمه دانلود کلیک کنید

سازنده (constructor) در جاوا متدی است که ویژگی های زیر را دارد:

  • نوع خاصی از متد های کلاس است.
  • هم نام با نام کلاس است.
  • این متد چیزی را return نمی کند.
  • در زمانی که یک شی از کلاس new می کنیم این متد صدا زده میشود.

انواع سازنده (constructor) در جاوا

  • سازنده پیش فرض (Default constructor) : اگر ما در داخل کلاس خودمون سازنده تعریف نکنیم جاوا یک متد خالی رو تعریف می کنه که Default constructor می نامیم.
  • سازنده بدون آرگومان (no-arg constructor) : اگر سازنده ما ورودی نداشته باشه از این نوع است.
  • سازنده با آرگومان ورودی (Parametrize constructor) : وقتی متد سازنده یک یا چند ورودی داشته باشه.

نکته : در سازنده با آرگومان ، ورودی های سازنده در زمان ساخت شی به کلاس داده می شود .

مدیریت حافظه در اشیا

همون طور که میدونید ما دو نوع کلی داده در جاوا با نام های primitive type و reference type داشتیم . نوع داده های primitive یا همون داده های اولیه به صورت مستقیم در حافظه پشته ذخیره می شن ، اما نوع داده های reference به صورت یک اشاره گر به حافظه heap هستند که در حقیقت به جای مقدار یک آدرس رو در حافظه پشته یا stack ذخیره می کنند. (متغیر در stack و شی در heap)

نکته : به داده های primitive نوع داده اولیه یا value type  نیز می گوییم.

سوال : چرا در دو نوع داده primitive و reference در یک جا قرار ندارند؟

داده های اولیه (value type) شکل ساده تری دارند به صورت مستقیم در حافظه stack ذخیره می شوند اما نوع داده های reference به دلیل پیچیده بودن در حافظه heap نگهداری می شوند و آدرس آن ها در stack قرار می گیرد.

کلاس B را در نظر بگیرید :

در این کلاس ما دو نوع سازنده بدون آرگومان و با آرگومان ورودی رو گذاشتیم.

کلاس A رو در نظر بگیرید :

خوب در کلاس A ما یک شی بدون ورودی با نام obj1 ساختیم و در نتیجه سازنده بدون آرگومان فراخوانی شد. در شی B ما یک شی با آرگومان ورودی ساختیم و درنتیجه سازنده از نوع با آرگومان فراخوانی شد.

خروجی برنامه به شکل زیر است:

None-parametrize constructor is called
number is: 0 & string is: null
number is: 10 & string is: mahdi

اشتراک گذاری :

مدرس دوره های جاوا اندروید و پایتون به صورت حضوری و مجازی

2 دیدگاه برای سازنده در جاوا (constructor)

  1. شما در ویدئو اشاره کردید به حافظه heap و stack . یعنی اگر ما یک تابع رو به صورت استاتیک در یک کلاس بنویسیم بهینه تره یا این که یک تابع رو به صورت مستقیم بنویسیم؟
    (بهینگی از نظر سرعت و استفاده از حافظه منظورم هست.)

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *