为什么我在父类里定义一下private属性,通过子类继承,可在外面访问,

来源:4-2 访问控制-PHP面向对象编程

Isset

2014-11-14 16:01


class Human{
    private   $height;        
}
class Player extends Human {
    protected $age;
    function __construct($name,$height){
         $this->name = $name;
         $this->height = $height;
         }
}
$joden=new Player('joden','25');
echo $joden->height;

写回答 关注

2回答

  • 凯jl
    2014-12-22 22:34:38

    Play的构造方法中这句代码:

    $this->height = $height;

    相当于给player增加了一个height属性...

  • 凯jl
    2014-12-22 22:33:38

    class Human{

        private   $height;

        public function setHeight($h){

        $this->height=$h;

       

        }

        public function printHeight(){

        echo "Human height:".$this->height;

        }

    }

    class Player extends Human {

        protected $age;

        function __construct($name,$height){ 

             $this->name = $name;

             $this->height = $height;

             }

    }

    $joden=new Player('joden','25');

    echo 'Player Heihgt:'.$joden->height;

    echo '<br>';

    echo '调用 Human 方法设置Human 的私有height:<br>';

    echo $joden->setHeight(30);

    echo $joden->printHeight();

    echo '<br>';

    echo '再次打印Player的Heihgt:'.$joden->height;


    狗剩儿

    height一共答应了3次,这段代码想说明第一次输出的height和第二次输出的height不是同一个变量,第一次输出的height是Play构造的,和父函数中被私有化的height没有任何关系,第二个输出的height是通过setheight方法设置的纯正爸爸私家货。思路很清晰,不错!

    2016-03-15 17:22:13

    共 1 条回复 >

PHP面向对象编程

从容应对面试官的知识宝典,带你握面向对象的最重要的核心能力

70146 学习 · 361 问题

查看课程

相似问题