> 백엔드 개발 > PHP 튜토리얼 > 关于继承的一点疑惑,希望大家可以帮帮忙!

关于继承的一点疑惑,希望大家可以帮帮忙!

WBOY
풀어 주다: 2016-06-23 14:39:26
원래의
887명이 탐색했습니다.

class f {
    private $str = "123";
    public function fun() {
         echo $this->str;
    }
}

class s extends f {
    public $str = "abc";
}

$s = new s();
$s->fun();
输出:123


class f {
    public $str = "123";
    public function fun() {
         echo $this->str;
    }
}

class s extends f {
    public $str = "abc";
}

$s = new s();
$s->fun();
输出:abc

第一个的输出很疑惑,为什么会输出父类的属性值?麻烦大家给我分析分析内存,有图说明更好,谢谢大家了。


回复讨论(解决方案)

私有属性不会被继承
私有属性只能用定义它的类的方法访问

私有属性不会被继承
私有属性只能用定义它的类的方法访问

这一点我还是明白,但是我疑惑的地方是,我在子类重新定义了属性,为什么调用方法还是会输出父类的属性值?

私有的是不可侵犯的
私有属性不能被子类覆盖,既然是私有属性不能被继承,当然也就不可能被覆盖了

私有的是不可侵犯的
私有属性不能被子类覆盖,既然是私有属性不能被继承,当然也就不可能被覆盖了
既然没有继承下来,我在子类定义属性也没有问题吧?然后我用继承下来的方法调用本类的属性值,为什么就拿不到呢?反而去拿父类的。不好意思,我还是很疑惑。

既然方法是继承过来的,很自然他会先在自己的地盘里寻找属性?

 解释的我也不清楚。。。。

  刚才百度了一下,明白了 嘿嘿 你看下 这句话   
如果父类有私有的属性。那么父类的方法只为父类的私有属性服务。 

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿