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

سازنده در جاوا (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 را در نظر بگیرید :

public class B {
    int a;
    String s;

    public B(){
        System.out.println("None-parametrize constructor is called");
    }

    public B(int a1, String s1){
        a = a1;
        s = s1;
    }

    public void info(){
        System.out.println("number is: " + a + " & string is: " + s);
    }
}

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

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

public class A {
    public static void main(String args[]) {
        B obj1 = new B();
        B obj2 = new B(10, "mahdi");
        obj1.info();
        obj2.info();
    }
}

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

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

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

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

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

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

دیدگاهتان را بنویسید

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