Php继承
我正在使用
PHP 5.3稳定版本,有时我会遇到非常不一致的行为.据我所知,在继承中,超类中的所有属性和方法(私有,公共和受保护)都是传递子类.
class Foo { private $_name = "foo"; } class Bar extends Foo { public function getName() { return $this->_name; } } $o = new Bar(); echo $o->getName(); //Notice: Undefined property: Bar::$_name in ...test.php on line 11 但是当Foo :: $_ name属性定义为“public”时,它不会给出错误. PHP有自己的OO规则??? 谢谢 编辑:现在一切都很清楚了. 编辑 class Foo { private $bar = "baz"; public function getBar() { return $this->bar; } } class Bar extends Foo {} $o = new Bar; echo $o->getBar(); //baz
从
PHP Manual开始:
class A { public $prop1; // accessible from everywhere protected $prop2; // accessible in this and child class private $prop3; // accessible only in this class } 不,这与实施相同关键字的其他语言没有什么不同. 关于您的第二个编辑和代码段: 不,这不应该给出错误,因为getBar()是从Foo继承而Foo可以看到$bar.如果在Bar中定义或重载了getBar(),它将无法工作.见http://codepad.org/rlSWx7SQ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |