class pc{
function power(){
echo "正在开机……";
}
}
class intel extends pc{
function power(){
echo "intel电脑".pc::power();
}
}
$intel1=new intel();
$intel1->power();为什么输出的是“正在开机……intel电脑”?

解决方案 »

  1.   

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <?php 
        class pc{ 
            function power(){ 
                echo "正在开机……"; 
            } 
        } 
        class intel extends pc{ 
            function power(){ 
                echo "intel电脑".pc::power(); 
            } 
        } 
        $intel1=new intel(); 
        $intel1->power(); 
    ?> echo "intel电脑".pc::power();
      

  2.   

    intel1 子类的power 输出后,再调用pc类的power输出 的顺序就应该是那样的... 
      

  3.   

    pc类里面应该用return
    因为你在echo "intel电脑".pc::power(); 的时候pc::power()是要先执行的
    "intel电脑".pc::power()是要拿它的返回值来,显然你没有任何返回,而是在里面echo了
      

  4.   

    呵呵 还真没这么用过 应该是楼上说得原因 php碰到echo 直接就输出了
      

  5.   

    power() 里的echo 应改为 return
      

  6.   

    父类的方法被子类覆盖,但子类输出时又调用了父类的方法一次。 所以变成这样。 你把 "intel电脑".pc::power(); 改成  echo pc::power()."intel电脑";  会得到一样的结果
      

  7.   

    pc类里面应该用return 
    因为你在echo "intel电脑".pc::power(); 的时候pc::power()是要先执行的 
    "intel电脑".pc::power()是要拿它的返回值来,显然你没有任何返回,而是在里面echo了
    如果你不想在pc里用return的话就将echo "intel电脑".pc::power(); 
    改成echo "intel电脑";pc::power(); 就好了,不连成一块