在php中使用多态性的正确方法?

约翰

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

<?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()。

乌尔里希·埃克哈特(Ulrich Eckhardt)

给定您提供的代码,除了仅仅存在您可以尝试的功能之外,还不清楚test()函数应该做什么。答案也将确定基类中的版本是否应保留为空函数。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

这是使用多态性的正确方法吗

来自分类Dev

C ++多态性。方法

来自分类Dev

Java多态性和方法链接

来自分类Dev

多态性,虚方法,C ++

来自分类Dev

静态方法和多态性

来自分类Dev

Java多态性/铸造/方法

来自分类Dev

如何创建方法多态性?

来自分类Dev

适当使用Universe多态性

来自分类Dev

如何避免多态性父查询中使用JPA和Hibernate时

来自分类Dev

多态性输出

来自分类Dev

QVariant的多态性

来自分类Dev

C ++的多态性

来自分类Dev

多态性的代价

来自分类Dev

Haskell多态性

来自分类Dev

如何正确组织继承类以利用多态性?

来自分类Dev

多态性-正确理解吗?(JAVA)

来自分类Dev

Purescript行多态性。正确的语法是什么?

来自分类Dev

CRTP的静态多态性:使用基类调用派生方法

来自分类Dev

仅子类具有虚拟方法时使用多态性的问题

来自分类Dev

如何在控制器动作上使用多态性的一种方法

来自分类Dev

是否有使用多态性删除此switch语句的好方法?

来自分类Dev

仅子类具有虚拟方法时使用多态性的问题

来自分类Dev

在 JEE 中使用 CDI 使用生产者和多态性添加有状态 bean

来自分类Dev

C#多态性和方法继承

来自分类Dev

多态性:被调用方法的真正类型是什么?

来自分类Dev

JAVA程序的输出[多态性,方法重写]

来自分类Dev

如何调用没有多态性的虚方法?

来自分类Dev

派生类中不同方法的多态性

来自分类Dev

仅使用静态多态性的异构容器