آموزش کلاس های Final

Image تحقیقات

آموزش کلاس های Final

با سلام و درود

امروز میخوام درباره کلاس ها , توابع داخل کلاس (متدها) از نوع final  در زبان php حرف بزنم.

کلاس هایی که از نوع final تعریف بشن.دیگر قابل ارث بری نیستن.یعنی دیگه هیچ زیر کلاسی نمیتونه از اون کلاس ارث بری انجام بده.

متدهایی که از نوع final تعریف بشن هم دیگر قابل بازنویسی نیستند.یعنی یک متد وقتی از نوع final باشه در زیر کلاس ها نمیشه متدی با همون نام داشت.

برای تعریف کلاس یا متد از نوع final فقط کافیه کلمه ی final را قبل از نام کلاس یا متد بنویسیم.

برای درک بهتر به مثال ها توجه کنید.

مثال : کلاس از نوع final

 // This class can not be Extended
  final class parent_class
  {
    public function class_method()
    {
      /* 
           Code Here
      */
    }
  }
  
  class child_class extends parent_class
  {
    public function class_method()
    {
      /* 
           Code Here
      */
    }
  }

 

  •  در خط 2 کلاسی به نام parent_class تعریف کردیم که از نوع final است. پس هیچ کلاسی نمیتواند ازاین کلاس مشتق بگیرید.
  • در خط 4 یک متد معمولی به نام class_method ساختیم که هیچ مشکلی ندارد و میتواند در زیر کلاس ها ، متدی با این نام داشت
  • در خط 12 کلاسی به نام child_class ایجاد کردیم و چون این کلاس از کلاس parent_class مشتق شده است پس ایجاد ارور میکند .چون کلاس parent_class از نوع final  می باشد.
  • در خط 14 یک متد به نام class_method ایجاد کردیم که مشکلی ندارد.

مثال : متد از نوع final

class parent_class
  {
    // We Can not override this method
    // As it declared as final
    final public function class_method()
    {
      /* 
           Code Here
      */
    }
  }
  
  class child_class extends parent_class
  {
    public function class_method()
    {
      /* 
           Code Here
      */
    }
  }

 

 

  •  در خط 1 کلاس معمولی به نام parent_class ایجاد کردیم.
  • در خط 5 متدی به نام class_method ایجاد کردیم و چون از نوع final است پس در زیر کلاس های دیگر نمیشود متدی به همین نام ایجاد کرد.
  • در خط 13 زیر کلاسی ایجاد کردیم به نام child_class که از کلاس parent_class مشتق شده است و مشکلی ندارد
  • در خط 15 متدی ایجاد کردیم به نام class_method و چون در کلاس پدر ، متدی به همین نام از نوع final موجود است . این خط خطاست و ارور می دهد.

امیدوارم که مفهموم و خاصیت کلاس و متد از نوع final رو متوجه شده باشین.