PHP中父类里调用子类的方法
答案:5 悬赏:20 手机版
解决时间 2021-12-01 23:19
- 提问者网友:像風在裏
- 2021-11-30 22:58
PHP中父类里调用子类的方法
最佳答案
- 五星知识达人网友:像个废品
- 2021-12-01 00:37
php 父类调用子类方法,参考如下:
class BaseApp
{
function _run_action()
{
$action = "index";
$this->$action();
}
}
class DefaultApp extends BaseApp
{
function index()
{
echo "DefaultApp->index() invoked";
}
function Go(){
//调用父类
parent::_run_action();
}
}
$default=new DefaultApp();
$default->Go();
//将显示DefaultApp->index() invoked
?>
class BaseApp
{
function _run_action()
{
$action = "index";
$this->$action();
}
}
class DefaultApp extends BaseApp
{
function index()
{
echo "DefaultApp->index() invoked";
}
function Go(){
//调用父类
parent::_run_action();
}
}
$default=new DefaultApp();
$default->Go();
//将显示DefaultApp->index() invoked
?>
全部回答
- 1楼网友:煞尾
- 2021-12-01 03:51
class A {
function example() {
echo "I am A::example() and provide basic functionality.
";
}
}
class B extends A {
function example() {
echo "I am B::example() and provide additional functionality.
";
parent::example();
}
}
$b = new B;
// 这将调用 B::example(),而它会去调用 A::example()。
$b->example();
?>
function example() {
echo "I am A::example() and provide basic functionality.
";
}
}
class B extends A {
function example() {
echo "I am B::example() and provide additional functionality.
";
parent::example();
}
}
$b = new B;
// 这将调用 B::example(),而它会去调用 A::example()。
$b->example();
?>
参考资料:http://www.php.net/manual/zh/keyword.parent.php
追问在父类的另外一个方法调用子类重写后的example方法,怎么调用????- 2楼网友:刀戟声无边
- 2021-12-01 03:35
…… 这样不行,也不符合逻辑,因为父类不会知道子类定义了什么方法,所以,父类去调用子类就不合理。
- 3楼网友:千夜
- 2021-12-01 02:16
class A{
public function test(){
B::test();//父类调用子类的方法
}
}
class B extends A{
public function test1(){
$this->test();//重写后的方法
}//
public function test(){
echo "这是b方法";
}
public function test2(){
parent::test();//父类的方法
}
}
$b=new A();
echo $b->test();
?>
public function test(){
B::test();//父类调用子类的方法
}
}
class B extends A{
public function test1(){
$this->test();//重写后的方法
}//
public function test(){
echo "这是b方法";
}
public function test2(){
parent::test();//父类的方法
}
}
$b=new A();
echo $b->test();
?>
- 4楼网友:天凉才是好个秋
- 2021-12-01 01:17
无解,除非是静态public方法,function前加static,可以testB::demo2()这样调用
子类重写之后的方法父类没法调用,换句话说,父类咋知道自己会被哪个子类继承呢,就算你强转虚表也不一样,无解的问题
而且父类咋需要调用子类的方法呢,就算你以后实践中有这样的需求,也只能说明你设计上不合理
子类重写之后的方法父类没法调用,换句话说,父类咋知道自己会被哪个子类继承呢,就算你强转虚表也不一样,无解的问题
而且父类咋需要调用子类的方法呢,就算你以后实践中有这样的需求,也只能说明你设计上不合理
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯