【问题标题】:Correct way of using polyporphism in php?在php中使用多态的正确方法?
【发布时间】:2014-11-08 12:07:38
【问题描述】:

我是面向对象的 php 新手。如果 HumanClass 的方法 testing() 中没有函数,我应该将它们声明为抽象吗?

<?php    
    class HumanClass
    {
        private $legs;
        private $hands;

        public function __construct($legs, $hands)
        {
            $this->legs = $legs;
            $this->hands = $hands;          
        }

         public function testing()
         {

         }       
    }

    class StudentClass extends HumanClass
    {
        private $books;


        public function __construct($legs, $hands, $books)
        {
            parent::__construct($legs, $hands);
            $this->books = $books;
        }



         public function testing()
         {
            echo "StudentClass called.";
         }       
    }

    function callClass(HumanClass $c)
    {
        $c->testing();
    } 

    $example = new StudentClass(4, 2, 1);
    callClass($a);  
?>

有可能有这样的东西吗?

echo $a->testing();

而不是有另一个方法来调用 testing()。

【问题讨论】:

  • 这是错字吗? $this-&gt;legs = legs; 没有 $ 和其他一些
  • @John:是什么阻止了您first检查 PHP 文档?

标签: php oop polymorphism abstract-class


【解决方案1】:

鉴于您提供的代码,我们还不清楚 testing() 函数应该做什么,而不仅仅是为了让您尝试一些事情。这个问题的答案也将决定基类中的版本是否应该作为空函数保留在那里。

还有其他选择,例如派生类首先调用基类(扩展),或者基类不包含抽象或具体的此类函数,而只有派生类包含。选择哪一个由知情的程序员决定。

【讨论】:

    猜你喜欢
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2018-01-24
    • 2011-07-08
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多