<?php
class A{
public $a=3;
function f( ){
echo $this->a;
}
}
class B extends A{
public $a=2;
function f( ){
echo $this->a;
A::f( ); // 这一步调用父类的方法,如果该方法子类已经重载过,则$this和 $a都指向当前子类所定义的值,$a值变成了2,而非A类自己定义的。。。
}
}
class C extends A{
}
$bb=new B( );
$bb->f( );
$cc=new C( );
echo $cc->a; // 这一步表明B类对A的重载,对C类没影响,C类的$a值还是3。
?>
class A{
public $a=3;
function f( ){
echo $this->a;
}
}
class B extends A{
public $a=2;
function f( ){
echo $this->a;
A::f( ); // 这一步调用父类的方法,如果该方法子类已经重载过,则$this和 $a都指向当前子类所定义的值,$a值变成了2,而非A类自己定义的。。。
}
}
class C extends A{
}
$bb=new B( );
$bb->f( );
$cc=new C( );
echo $cc->a; // 这一步表明B类对A的重载,对C类没影响,C类的$a值还是3。
?>