/
  • ارث بری

  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 4
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی ارث بری
    نویسنده پیام
    #yaser آفلاین
    عضو جدید
    **

    ارسال‌ها: 3
    تاریخ عضویت: ۱۳۹۴ شهريور ۳
    اعتبار: 0
    تشکرها : 0
    ( 0 تشکر در 0 ارسال )
    ارسال: #1
    ارث بری
    سلام
    داکیومنت های پی اچ پی رو نگاه می کردم که به این مثال خوردم:
    کد:
    <?php
    class Base
    {
    public function test() {
    $this->testPrivate();
    $this->testPublic();
    }

    public function testPublic() {
    echo "Base::testPublic\n";
    }

    public function testPrivate() {
    echo "Base::testPrivate\n";
    }
    }

    class Child extends Base
    {
    public function testPublic() {
    echo "Child::testPublic\n";
    }

    private function testPrivate() {
    echo "Child::testPrivate\n";
    }
    }

    $myFoo = new Child();
    $myFoo->test(); // Base::testPrivate
    // Child::testPublic
    ?>
    اینجا متد تست رو از کلاس child اجرا کردیم پس چرا متد testPrivate رو از کلاس Base اجرا کرد؟
    ۱۳۹۴ شهريور ۳ ۰۹:۵۲ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    shgninc آفلاین
    سید سجاد شاهچراغیان
    ***

    ارسال‌ها: 1,493
    تاریخ عضویت: ۱۳۸۹ خرداد ۱۹
    اعتبار: 32
    تشکرها : 1402
    ( 666 تشکر در 504 ارسال )
    ارسال: #2
    RE: ارث بری
    خیر براساس قوانین ارث بری، متد test از کلاس والد اجرا شده است.
    متد های دیگر اصطلاحا overwrite شده اند.
    __________________________________________________________________________
    سالهــــا مـــــى گــــــذرد، حادثه ها مى آید
    انتظـــــار فـــــــرج از نیمـــــه خــــــرداد کشم

    [تصویر:  ShowPicture.aspx?ID=52750d12-5d92-4286-9...height=100]
    ۱۳۹۴ شهريور ۳ ۱۰:۰۹ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    #yaser آفلاین
    عضو جدید
    **

    ارسال‌ها: 3
    تاریخ عضویت: ۱۳۹۴ شهريور ۳
    اعتبار: 0
    تشکرها : 0
    ( 0 تشکر در 0 ارسال )
    ارسال: #3
    RE: ارث بری
    (۱۳۹۴ شهريور ۳ ۱۰:۰۹ عصر)shgninc نوشته شده توسط:  خیر براساس قوانین ارث بری، متد test از کلاس والد اجرا شده است.
    متد های دیگر اصطلاحا overwrite شده اند.

    خوب این کد متد تست پرایویت رو از کلاس child و تست پابلیک رو از base اجرا کرده! یعنی دو کلاس متفاوت، اگه قراره کل تست رو از base آجرا کنه چرا پرایویت تست child رو اجرا کرده؟
    ۱۳۹۴ شهريور ۳ ۱۰:۱۵ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Y.P.Y آفلاین
    ناظم کل
    *******

    ارسال‌ها: 2,782
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 103
    تشکرها : 2181
    ( 4856 تشکر در 2220 ارسال )
    ارسال: #4
    RE: ارث بری
    درضمن مثال شما یه ایراد داره، اونم سطح دسترسی همه متد testPrivate ت باید مثل هم باشن یا Protected

    اگر سطح دسترسی همه متدهای testPrivate پابلیک بشن، php متد مال کلاس بچه رو اجرا می کنه
    اگر سطح دسترسی همه متدهای testPrivate پرایوت بشن، php متد مال کلاس پدر رو اجرا می کنه
    نقل قول: Members declared as private may only be accessed by the class that defines the member.

    همچنین در ارث بری، بهتره متدها و پروپرتی هارو Protected تعریف کنی (معمولاً همینکارو می کنن)
    __________________________________________________________________________
    وبلاگ: Yousha.Blog.ir

    صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
    http://gulfnews.com/opinion/thinkers/ira...i-1.500997
    (آخرین ویرایش در این ارسال: ۱۳۹۴ شهريور ۴ ۰۱:۳۶ صبح، توسط Y.P.Y.)
    ۱۳۹۴ شهريور ۴ ۰۱:۲۴ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : hamid_80386
    #yaser آفلاین
    عضو جدید
    **

    ارسال‌ها: 3
    تاریخ عضویت: ۱۳۹۴ شهريور ۳
    اعتبار: 0
    تشکرها : 0
    ( 0 تشکر در 0 ارسال )
    ارسال: #5
    RE: ارث بری
    (۱۳۹۴ شهريور ۴ ۰۱:۲۴ صبح)Y.P.Y نوشته شده توسط:  درضمن مثال شما یه ایراد داره، اونم سطح دسترسی همه متد testPrivate ت باید مثل هم باشن یا Protected

    اگر سطح دسترسی همه متدهای testPrivate پابلیک بشن، php متد مال کلاس بچه رو اجرا می کنه
    اگر سطح دسترسی همه متدهای testPrivate پرایوت بشن، php متد مال کلاس پدر رو اجرا می کنه
    نقل قول: Members declared as private may only be accessed by the class that defines the member.

    همچنین در ارث بری، بهتره متدها و پروپرتی هارو Protected تعریف کنی (معمولاً همینکارو می کنن)
    خیلی ممنونم Smile
    ۱۳۹۴ شهريور ۴ ۱۰:۰۸ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS