1.php类中的子类与父类
a.子类继承父类
我们在项目开发中,会建立很多类文件,分门别类的归整各种方法。但一些共用的方法,我们想在其他类文件中也调用,避免重写,这就涉及到写类文件时,会继承公共类中的方法。
看个小例子:
代码:
class Common{
public function output(){
echo 'hello, Commmon';
echo '<hr>';
}
}
class MyClass extends Common{
public function myoutput(){
parent::output();
echo 'hello,MyClass';
}
}
$my_class = new MyClass();
$my_class->myoutput();
注:在这个程序中我们建了两个文类,Common和MyClass,Common里的方法,我们认为是公共方法,可以单独放到一个文件里,供其他类引用。MyClass类借助extends关键字继承了公共类Common,成为其子类,子类调用父类的方法,使用parent关键字,比如本例中myoutput就调用了公共类中的output方法,从运行结果来看,父类中的方法也输出了结果。有个问题是子类能不能重写父类方法呢,当然是可以的,如下:
代码:
class Common{
public function output(){
echo 'hello, Commmon-5';
echo '<hr>';
}
}
class MyClass extends Common{
public function output(){
parent::output();
echo 'hello,MyClass-12';
}
}
$my_class = new MyClass();
$my_class->output();
注:从运行结果来看,是可以的,父类Common中定义了方法output,之类MyClass中重写了方法output,实例化子类,调用output时,输出的是子类output中的内容,因为子类方法output又调用了父类方法output,所以父类的方法内容也输出了。
b.父类调用子类的方法
子类能调用父类的方法,那父类能调用子类的方法吗?答案是肯定的。看下面小例子,代码:
class Common{
public function output(){
echo 'hello, Commmon-5';
echo '<hr>';
$my_class = new MyClass();
$my_class->myoutput('abcd');
}
}
class MyClass extends Common{
public function myoutput($input='a'){
echo '你输入了'.$input;
}
}
$Common = new Common();
$Common->output();
注:上面程序中,我们看到,MyClass类继承了Common类,我们称MyClass为Common的子类,父类怎么调用子类MyClass的方法呢,需要在父类中先实例化子类,之后,再调用相关方法,严格来讲,MyClass不能称为Common的子类,它只是引用了Common,即使不引用Common,Common中也可以向上面那样调用MyClass的方法。