在PHP上相反的覆盖

时间:2012-07-27 13:41:06

标签: php class override

有太多的子类,如果它们包含'例如,我想处理它们。 getName()函数并在超级类中覆盖它们。并希望打印出一个'对于他们每个人。我该如何实现呢?

<?php
   class SuperClass{
      public function getName(){
          echo 'a';
      }
   }
   class ChildClass extends SuperClass{
      public function getName(){
          echo 'b';
      }
   }
   class SecondChildClass extends SuperClass{
      public function getName(){
          echo 'c';
      }
   }
$a = new ChildClass();
$a->getName(); //prints a
$b = new SecondChildClass();
$b->getName(); //prints a
?>

1 个答案:

答案 0 :(得分:4)

对于您的示例,要正常工作,只需从SuperClass中删除getName()函数。如果您仍想偶尔调用SuperClass getName,请尝试重载SuperClass getName函数。

的getName($标志)

这样,如果你想对SuperClass变量进行分类,你就会传递它,否则它会调用子类。

<?php
   class SuperClass{
      public function getName($flag){
          echo 'a';
      }
   }
   class ChildClass extends SuperClass{
      public function getName(){
          echo 'b';
      }
   }
   class SecondChildClass extends SuperClass{
      public function getName(){
          echo 'c';
      }
   }

   $a = new ChildClass();
   $a->getName(); //prints b
   $a->getName(true); //prints a
   $b = new SecondChildClass();
   $b->getName(); //prints c
   $b->getName(true); //prints a
?>