0

有太多子类,如果它们包含“例如”getName() 函数并在“超级类”中覆盖它们并希望为每个子类打印“a”,我想处理它们。我该如何实施?

<?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
?>
4

1 回答 1

4

对于您的示例,要正常工作,只需从 SuperClass 中删除 getName() 函数。如果您仍想每隔一段时间调用 SuperClass getName,请尝试重载 SuperClass 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
?>
于 2012-07-27T13:51:01.300 回答