• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
()final private myMethod
#1
واقاً ()final private myMethod چه معنی میده؟
درحالی که متد private هست و غیر قابل دسترس و final هم از ارث بری/overwite جلوگیری میکنه...
نظرتون چیه؟
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : Maysam.m
#2
نقل قول: واقاً ()final private myMethod چه معنی میده؟
یعنی کار از محکم کاری عیب نمیکنه Big Grin

البته یه چیزی رو مد نظر داشته باش .
اگه کلاس مادر/پدر یک متد private باشه ، کلاس فرزند هم میتونه همون متد رو داشته باشه اما خب ارث بری نمیشه دیگه ازش .
کد پی‌اچ‌پی:
class {
      private function 
test(){
      echo 
__CLASS__;
      }     
}

class 
extends {
    private function 
test(){
        echo 
__CLASS__;
    }
    
    function 
e()
    {
        
        
$this->test();
    }
}


$do = new B;

$do->e(); // show B 
اما اگه final بذاری دیگه حتی رئیس جمهورم نمیتونه کاریش کنه Big Grin
  پاسخ
تشکر شده توسط : Maysam.m
#3
نقل قول:اگه کلاس مادر/پدر یک متد private باشه ، کلاس فرزند هم میتونه همون متد رو داشته باشه
lol?
شوخی میکنی؟
الان اون متد های private ت هیچ تاثیری نداره، overwrite هم انجام نشده...
دوربین مخفیه؟
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط :
#4
final از override شدن یک تابع در subClassها جلوگیری می کند. اما نکته اینجاست که در زیرکلاسها این تابع در دسترس است.

private متد را در هر کلاس جز خود کلاس والد غیر قابل دسترس می کند.

نتیجه گیری: متدی را final کن که می خواهی توسط هیچ کلاسی override نشود و متدی را private کن که میخواهی هیچ کلاسی دسترسی مستقیم به آن نداشته باشد.
جامعه مجازی پیمانکاران و کارفرمایان
www.beestak.com
  پاسخ
تشکر شده توسط :
#5
-1

سوال چیز دیگه ای بود... کاربرد هردوشونو میدونم
منظورم فلسفه final private با هم، نه مجزا...
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : Maysam.m
#6
اگه با هم استفاده بشه :
میگه نتنها حق نداری از اسمی که من انتخاب کردم تو اسم توابعت استفاده کنی(final)
حتی حق نداری از محتواش هم استفاده کنی(private)

ولی اگه تنهایی استفاده بشه :
اگه final باشه , میشه از محتویاتش استفاده کرد ولی با داخل یه تابع با اسم دیگری
اگر private باشه میشه از همون اسم انتخاب کرد ولی از ارث محرومه Big Grin
  پاسخ
تشکر شده توسط : Maysam.m


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان