جاوا

جلسه ۲۲: سازنده های کلاس در جاوا

date.Date()

ما شی (object) را درست مانند ایجاد یک عدد صحیح (int) یا رشته (string) ایجاد می کنیم. به همین راحتی! سازنده پیش فرض نیازی به تعریف صریح ندارد. حتی اگر آن را ایجاد نکنیم ، JVM یک سازنده پیش فرض را فراخوانی می کند و اعضای داده را روی null یا ۰ تنظیم می کند.

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

سازنده پارامتری

سازنده پیش فرض خیلی مفید نیست. مطمئناً ، ما می توانیم از متد های set برای تعیین مقادیر روز (day) ، ماه (month) و سال (year) استفاده کنیم ، اما می توان با استفاده از یک سازنده پارامتری از این کار بی نیاز شد.

در یک سازنده پارامتری ، آرگومان هایی را به سازنده منتقل می کنیم و داخل سازنده ، این آرگمان ها را به عنوان مقادیر اعضای داده خود تنظیم می کنیم.

ما درواقع درحال overload کردن سازنده پیش فرض هستیم تا مقادیر دلخواه خود را برای اعضای داده در نظر بگیریم. در کد زیر این روش را استفاده کرده ایم:

class Date {

  private int day;
  private int month;
  private int year;


  // Default constructor
  public Date() {
    // We must define the default values for day, month, and year
    day = 0;
    month = 0;
    year = 0;
  }

  // Parameterized constructor
  public Date(int d, int m, int y){
    // The arguments are used as values
    day = d;
    month = m;
    year = y;
  }

  // A simple print function
  public void printDate(){ 
    System.out.println("Date: " + day + "/" + month + "/" + year);
  }
}

class Demo {
  
  public static void main(String args[]) {
    // Call the Date constructor to create its object;
    Date date = new Date(1, 8, 2018); // Object created with specified values! // Object created with default values!
    date.printDate();
  }
  
}

این بسیار راحت تر از سازنده پیش فرض است! در جلسه بعدی ، کمی بیشتر در مورد سازنده ها یاد خواهیم گرفت.

class Date {

  private int day;
  private int month;
  private int year;


  // Default constructor
  public Date() {
    // We must define the default values for day, month, and year
    day = 0;
    month = 0;
    year = 0;
  }

  // A simple print function
  public void printDate(){ 
    System.out.println("Date: " + day + "/" + month + "/" + year);
  }
  
}

class Demo {
  
  public static void main(String args[]) {
    // Call the Date constructor to create its object;
    Date date = new Date(); // Object created with default values!
    date.printDate();
  }
  
}

توجه داشته باشید که وقتی یک شی Date در خط ۲۶ ایجاد کردیم ، با سازنده به عنوان یک متد رفتار نمی کنیم و این را نمی نویسیم:

date.Date()

ما شی (object) را درست مانند ایجاد یک عدد صحیح (int) یا رشته (string) ایجاد می کنیم. به همین راحتی! سازنده پیش فرض نیازی به تعریف صریح ندارد. حتی اگر آن را ایجاد نکنیم ، JVM یک سازنده پیش فرض را فراخوانی می کند و اعضای داده را روی null یا ۰ تنظیم می کند.

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

سازنده پارامتری

سازنده پیش فرض خیلی مفید نیست. مطمئناً ، ما می توانیم از متد های set برای تعیین مقادیر روز (day) ، ماه (month) و سال (year) استفاده کنیم ، اما می توان با استفاده از یک سازنده پارامتری از این کار بی نیاز شد.

در یک سازنده پارامتری ، آرگومان هایی را به سازنده منتقل می کنیم و داخل سازنده ، این آرگمان ها را به عنوان مقادیر اعضای داده خود تنظیم می کنیم.

ما درواقع درحال overload کردن سازنده پیش فرض هستیم تا مقادیر دلخواه خود را برای اعضای داده در نظر بگیریم. در کد زیر این روش را استفاده کرده ایم:

class Date {

  private int day;
  private int month;
  private int year;


  // Default constructor
  public Date() {
    // We must define the default values for day, month, and year
    day = 0;
    month = 0;
    year = 0;
  }

  // Parameterized constructor
  public Date(int d, int m, int y){
    // The arguments are used as values
    day = d;
    month = m;
    year = y;
  }

  // A simple print function
  public void printDate(){ 
    System.out.println("Date: " + day + "/" + month + "/" + year);
  }
}

class Demo {
  
  public static void main(String args[]) {
    // Call the Date constructor to create its object;
    Date date = new Date(1, 8, 2018); // Object created with specified values! // Object created with default values!
    date.printDate();
  }
  
}

این بسیار راحت تر از سازنده پیش فرض است! در جلسه بعدی ، کمی بیشتر در مورد سازنده ها یاد خواهیم گرفت.

در این جلسه، سازنده ها را بررسی می کنیم و خواهید فهمید که چرا وجود آنها برای کلاس ها ضروری است. موارد زیر را بیان خواهیم کرد

  • سازنده چیست؟
  • سازنده پیش فرض
  • سازنده با ورودی پارامتر

سازنده چیست؟

همانطور که از نامش پیداست ، سازنده برای ساختن شی (object) از کلاس استفاده می شود. سازنده یک متد خاص است که کارهایی که باید در هنگام ایجاد نمونه ای از یک کلاس انجام شود را مشخص می کند.

نام سازنده باید دقیقاً همان نام کلاس آن باشد.

سازنده یک متد خاص است زیرا نوع بازگشتی ندارد. حتی لازم نیست که void را به عنوان نوع بازگشت بنویسیم. عادت خوبی است که اعلام و تعریف سازنده را قبل از سایر متدهای کلاس در داخل کد کلاس قرار دهیم. در ادامه انواع مختلف سازنده ها و نحوه استفاده از آنها برای ایجاد اشیا را بررسی می کنیم.

سازنده پیش فرض

سازنده پیش فرض اصلی ترین و ابتدایی ترین شکل سازنده است. آن را اینطور در نظر بگیرید:

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

وقتی به کد زیر نگاه می کنیم ، این منطقی به نظر می رسد. در اینجا ، ما یک کلاس Date ، با سازنده پیش فرض آن داریم ، و از آن یک شی در متد main ایجاد می کنیم:

class Date {

  private int day;
  private int month;
  private int year;


  // Default constructor
  public Date() {
    // We must define the default values for day, month, and year
    day = 0;
    month = 0;
    year = 0;
  }

  // A simple print function
  public void printDate(){ 
    System.out.println("Date: " + day + "/" + month + "/" + year);
  }
  
}

class Demo {
  
  public static void main(String args[]) {
    // Call the Date constructor to create its object;
    Date date = new Date(); // Object created with default values!
    date.printDate();
  }
  
}

توجه داشته باشید که وقتی یک شی Date در خط ۲۶ ایجاد کردیم ، با سازنده به عنوان یک متد رفتار نمی کنیم و این را نمی نویسیم:

date.Date()

ما شی (object) را درست مانند ایجاد یک عدد صحیح (int) یا رشته (string) ایجاد می کنیم. به همین راحتی! سازنده پیش فرض نیازی به تعریف صریح ندارد. حتی اگر آن را ایجاد نکنیم ، JVM یک سازنده پیش فرض را فراخوانی می کند و اعضای داده را روی null یا ۰ تنظیم می کند.

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

سازنده پارامتری

سازنده پیش فرض خیلی مفید نیست. مطمئناً ، ما می توانیم از متد های set برای تعیین مقادیر روز (day) ، ماه (month) و سال (year) استفاده کنیم ، اما می توان با استفاده از یک سازنده پارامتری از این کار بی نیاز شد.

در یک سازنده پارامتری ، آرگومان هایی را به سازنده منتقل می کنیم و داخل سازنده ، این آرگمان ها را به عنوان مقادیر اعضای داده خود تنظیم می کنیم.

ما درواقع درحال overload کردن سازنده پیش فرض هستیم تا مقادیر دلخواه خود را برای اعضای داده در نظر بگیریم. در کد زیر این روش را استفاده کرده ایم:

class Date {

  private int day;
  private int month;
  private int year;


  // Default constructor
  public Date() {
    // We must define the default values for day, month, and year
    day = 0;
    month = 0;
    year = 0;
  }

  // Parameterized constructor
  public Date(int d, int m, int y){
    // The arguments are used as values
    day = d;
    month = m;
    year = y;
  }

  // A simple print function
  public void printDate(){ 
    System.out.println("Date: " + day + "/" + month + "/" + year);
  }
}

class Demo {
  
  public static void main(String args[]) {
    // Call the Date constructor to create its object;
    Date date = new Date(1, 8, 2018); // Object created with specified values! // Object created with default values!
    date.printDate();
  }
  
}

این بسیار راحت تر از سازنده پیش فرض است! در جلسه بعدی ، کمی بیشتر در مورد سازنده ها یاد خواهیم گرفت.

نوشته های مشابه

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

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

دکمه بازگشت به بالا