شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش جاوا - سازنده‌ها

یک سازنده، یک شیء را هنگام ایجاد آن مقداردهی اولیه می‌کند. این سازنده نامی مشابه با نام کلاس دارد و  مشابه با یک متد است. با این حال، سازنده‌ها هیچ نوع بازگشتی صریحی ندارند.

به طور معمول، از یک سازنده استفاده می‌کنید تا مقادیر اولیه را به متغیرهای نمونه‌ای که توسط کلاس تعریف شده‌اند، بدهید یا هر متد دیگری را که برای ایجاد یک شیء کاملاً شکل‌گرفته نیاز است، انجام دهید.

تمام کلاس‌ها، سازنده دارند، جاوا به طور خودکار یک سازنده پیش‌فرض ارائه می‌دهد که تمام متغیرهای عضو را به صفر مقداردهی اولیه می‌کند. با این حال، بعد از تعریف سازنده خود، سازنده پیش‌فرض دیگر استفاده نمی‌شود.

نحو

در زیر نحو یک سازنده آمده است:


class ClassName {
   ClassName() {
   }
}

جاوا دو نوع سازنده را ممکن می‌سازد و به شرح زیر هستند:

  • سازنده‌های بدون آرگومان (No argument Constructors)
  • سازنده‌های با پارامتر (Parameterized Constructors)

سازنده‌های بدون آرگومان

همانطور که از نامش پیداست، سازنده‌های بدون آرگومان جاوا هیچ پارامتری را قبول نمی‌کنند و به جای آن، با استفاده از این سازنده‌ها، متغیرهای نمونه روش با مقادیر ثابت برای همه اشیاء مقداردهی اولیه می‌شوند.

مثال


Public class MyClass {
   Int num;
   MyClass() {
      num = 100;
   }
}

برای مقداردهی اولیه شیء، شما سازنده را به صورت زیر فراخوانی می‌کنید


public class ConsDemo {
   public static void main(String args[]) {
      MyClass t1 = new MyClass();
      MyClass t2 = new MyClass();
      System.out.println(t1.num + " " + t2.num);
   }
}

این عمل، نتیجه زیر را به دنبال دارد


100 100

سازنده‌های با پارامتر (Parameterized Constructors)

بیشتر اوقات، نیاز خواهید داشت به یک سازنده که یک یا چند پارامتر را قبول کند. پارامترها به یک سازنده به همان روشی که به یک متد اضافه می‌شوند، اضافه می‌شوند، فقط آنها را داخل پرانتزها بعد از نام سازنده تعریف کنید.

مثال

اینجا یک مثال ساده است که از یک سازنده استفاده می‌کند −


// A simple constructor.
class MyClass {
   int x;
   
   // Following is the constructor
   MyClass(int i ) {
      x = i;
   }
}

برای مقداردهی اولیه شیء، شما سازنده را به صورت زیر فراخوانی می‌کنید −


public class ConsDemo {
   public static void main(String args[]) {
      MyClass t1 = new MyClass( 10 );
      MyClass t2 = new MyClass( 20 );
      System.out.println(t1.x + " " + t2.x);
   }
}

این عمل، نتیجه زیر را به دنبال دارد −


10 20