如何访问子类中的Base属性?

时间:2015-11-14 04:45:46

标签: php inheritance

以下是代码:

 <? php
class Animal
    {    
        public $type = 'Animal';    
        function printProperties ()
            {
                echo $this->type;
            }
    }

class Dog extends Animal
    {
        public $type = 'Dog';

        function printProperties()
            {
                echo $this->type.'<br>';
                parent::printProperties ();
            }

$aDog  = new Dog;
$aDog-> printProperties ();    
?>

代码打印Dog newl Dog

我预计输出为Dog newline Animal。如何得到这个结果。如果我覆盖属性,我是否无法访问子类中的基本属性?

2 个答案:

答案 0 :(得分:0)

<?php
class foo {
    var $x;
    function foofoo()
    {
        $this->x = "foofoo";
        return;
    }
}
class bar extends foo {
    // we have var $x; from the parent already here.
    function barbar()
    {
        parent::foofoo();
        echo $this->x;
    }
}
$b = new bar;
$b->barbar(); // prints: "foofoo"
?>

资料来源:http://php.net/manual/en/keyword.parent.php

答案 1 :(得分:0)

没有父属性这样的东西。属性是类实例的一部分,即对象。从这个意义上说,你的对象只有一个属性“type”(你定义了两次)。解释器为它分配在最具体的类上指定的值,你对象是(继承)的实例,即Dog。 因此,当printProperties方法(两个实现,在父类和子类中)打印对象“type”属性的值时,它们都将输出相同的值(<br>除外)。