class MyPc{ private $name;(标记1) function __construct($n=""){
return $this->name=$n;(标记2)
}
 function vod(){ $this->name="Hello";
return $name;
}
}
$pc1 = new MyPc(ee); echo $pc1->name;==============================================
标记2处的语句 是不是等于直接建立了一个name属性同时再赋值给它,就只是把标记1处的name属性给给覆盖了?
因为当把标记1 处给注释掉的时候    还是可以正常打印的,
    

解决方案 »

  1.   

    标记2出是构造函数,$pc1 = new MyPc(ee);当你new时就调用了该函数。按你的写法echo $pc1->name;因为private的属性是不允许这样访问的。当你“标记1 处给注释掉的时候”,因为php的变量是不用事先声明的,注释掉$name就默认为public了,echo $pc1->name;就正确了。
      

  2.   

    更正一处错误。
    $pc1 = new MyPc('ee');
      

  3.   

    就上面的代码 楼主确定能运行?PHP弱类型 当标记1不在的时候 应该是自动为那类创建一个属性 存在时只是赋值
      

  4.   

    还要提醒楼主的是
    function __construct($n=""){
    return $this->name=$n;(标记2)
    }
    按照严格的类的概念以上代码是有错误的,因为在构造函数是不允许有返回值的。
      

  5.   

    标记2处的语句 是不是等于直接建立了一个name属性同时再赋值给它,就只是把标记1处的name属性给给覆盖了?
    因为当把标记1 处给注释掉的时候 还是可以正常打印的,-----------------------------------------------------对. 因为private类型只能在类内应用, 所以在赋值的同时, 要输出即用return返回值, 
      

  6.   

    哦  , 1楼 “php的变量是不用事先声明的”   这下理解了,  之前接触了一点点java  这里有区别,现在懂了  呵呵  谢谢