php在子类中调用父类的方法,在子类中怎么使用父类中定义的第三方的类方法呢...

在子类中如何使用父类中定义的第三方的类方法呢?

class a {

var $c;

function aa() {

echo "I'm a!";

}

function gc(){

$this->c = new c;

}

}

class b extends a {

function bb() {

echo "I'm b!";

}

function dc(){

$this->c->c();//报错: Call to a member function c() on a non-object

//在子类中如何使用父类中定义的第三方的类方法呢?

}

}

class c {

function c() {

echo "I'm c!";

}

}

$a = new a;

$b = new b;

$a->aa();//I'm a!

$a->gc();//I'm c!

$b->dc();//报错: Call to a member function c() on a non-object

?>

------解决思路----------------------

class a {

var $c;

function aa() {

echo "I'm a!";

}

function gc(){

$this->c = new c;

}

}

class b extends a {

function bb() {

echo "I'm b!";

}

function dc(){

parent::gc();//要先实例化c $this->c才有值

//由于 方法c() 和类c 同名,实例化时会自动调用(构造方法) 输出第三个I'm c!

$this->c->c();//调用方法c() ,输出I'm c!

}

}

class c {

function c() {

echo "I'm c!";

}

}

$a = new a;

$b = new b;

$a->aa();//I'm a!

$a->gc();//I'm c!

$b->dc();//报错: Call to a member function c() on a non-object

//I'm a!I'm c!I'm c!I'm c!

------解决思路----------------------

class a {

public $c;

function aa() {

echo "I'm a!";

}

function gc(){

$this->c = new c;

}

}

class b extends a {

function bb() {

echo "I'm b!";

}

function dc(){

$this->gc(); // 执行gc方法创建c对象

$this->c->c();

}

}

class c {

function c() {

echo "I'm c!";

}

}

$a = new a;

$b = new b;

$a->aa();//I'm a!

$a->gc();//I'm c!

$b->dc();//I'm c!

?>

$a = new a;

$b = new b;

$a 与 $b是两个类对象,

对于$b来讲,并没有执行继承类 a的gc方法,所以$this->c为null

修改方法如下,在$b中执行一下gc即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值