先給出個(gè)簡(jiǎn)答的例子:
<?php
class ParentClass
{
public function one()
{
echo 'parent here<br />';
}
public function alone()
{
echo 'alone<br />';
$this->one();
}
}
class ChildClass extends ParentClass
{
public function one()
{
echo 'child here<br />';
}
public function test()
{
$this->alone();
}
}
$child = new ChildClass();
$child->test();
//輸出
alone
child here
注意在子類(lèi)中實(shí)例中調(diào)用父類(lèi)的方法,如果父類(lèi)方法中包含子類(lèi)重載后的方法時(shí),會(huì)優(yōu)先調(diào)用子類(lèi)方法。如果子類(lèi)中沒(méi)有此方法時(shí)瘫筐,才會(huì)調(diào)用父類(lèi)的方法堤魁。
<?php
class ParentClass
{
public function one()
{
echo 'parent here<br />';
}
public function alone()
{
echo 'alone<br />';
$this->one();
}
}
class ChildClass extends ParentClass
{
// public function one()
// {
// echo 'child here<br />';
// }
public function test()
{
$this->alone();
}
}
$child = new ChildClass();
$child->test();
//輸出
alone
parent here
這樣的行為喂链,在python中也同樣成立:
class ParentClass:
def one(self):
print "parent here"
def alone(self):
print "alone"
self.one()
class ChildClass(ParentClass):
def one(self):
print "child here"
def test(self):
self.alone()
c = ChildClass()
c.test()
//輸出
alone
child here
還有一個(gè)特性值得注意的是:在C和C++里,父類(lèi)都不允許調(diào)用子類(lèi)的方法妥泉,但在php里可以椭微。
下面是一個(gè)調(diào)用的例子:
<?php
class Animal
{
protected $name;
public function run()
{
echo 'Aniaml run';
$this->swim();
echo $this->fishNum;
}
}
class Fish extends Animal
{
public $fishNum=10;
public function swim()
{
echo 'Fish swim';
}
}
$fish=new Fish();
$fish->swim();
$fish->run();
//輸出
Fish swimAniaml runFish swim10
參考網(wǎng)站: