抽象和继承类中的受保护函数

时间:2016-01-25 12:32:03

标签: php

我有一个抽象类,它扩展了另一个类,函数被定义为 protected ,而且这个函数继承自另一个类,现在我试图调用该函数。 它给了我错误。我不知道我有什么问题。我的代码如下:

abstract class abc {
abstract protected function f1($name, $address);
}
class xyz extends abc {
protected function f1($name, $address) {
    return "$name , $address";
}
}
class jkl extends xyz {
   echo $this->f1('Ravi','Delhi');
}

2 个答案:

答案 0 :(得分:0)

要使代码正常工作,您应该将jkl中的echo包装在公共函数中。

<?php
abstract class abc {
    abstract protected function f1($name, $address);
}

class xyz extends abc {
    protected function f1($name, $address) {
        return "$name , $address";
    }
}

class jkl extends xyz {
    public function echodata(){
        return $this->f1('Ravi','Delhi');   
    }
}


echo (new jkl)->echodata();

答案 1 :(得分:0)

您正在尝试将代码调用以在类定义中调用受保护的方法,但不在方法内部。这不是有效的。您需要将其放在方法中:

class jkl extends xyz {
   public function go(){
     echo $this->f1('Ravi','Delhi');
   }
}

然后创建该类的实例并从主程序体中调用该方法:

$obj = new jkl;
$obj->go();

HTH