博学而笃志 切问而近思 仁在其中
详情
php面向对象编程的继承性
作者:Aliot     发布时间:2017-07-02     评论:0     阅读:0

php面向对象编程的继承性

时间:2016-10-22 guaitu

为什么需要继承?

  //开发一套学生管理系统(小学生pupil,大学生,...)
//父类
class Stu{
public $name;
protected $age;
protected $grade;
public function showInfo(){
echo $this->name."||".$this->age;
}
}
//子类
class Pupil extends stu{ //小学生
public function testing(){
echo "小学生考试";
}
}
class Graduate extends stu{//研究生
public function testing(){
echo "研究生考试";
}
}
//创建学生
$stu1=new Pupil();
$stu1->testing();
$stu1->name="www.bianceng.cn";
$stu1->showInfo();
echo "
";
//创建研究生
$stu2=new Graduate();
$stu2->testing();
$stu2->name="hello";
$stu2->showInfo();
?>

从上面代码可以看出,所谓继承,就是一个子类通过 extends 父类,把父类的public/protect属性和方法继承下来,但不能继承父类的private属性和方法。

继承的基本语法:

class 类名 extends 父类名{

//子类需要的属性和方法

}

使用继承的注意事项:

1)子类能把父类的public/protect属性和方法继承下来,但不能继承父类的private属性和方法

//父类的什么属性和方法被子类继承
class A{
public $n1=1;
protected $n2="www.bianceng.cn";
private $n3=20;
public function test1(){
echo "test1()";
}
public function test2(){
echo "test2()";
}
public function test3(){
echo "test3()";
}
}
class SubClass extends A{
function show(){
echo "
".$this->n2; //
}
}
//创建SubClass对象
$sub1=new SubClass();
$sub1->test1();
echo "
";
$sub1->test2();
echo "
";
$sub1->test3();
echo "
".$sub1->n1;
$sub1->show();
?>

2)php继承是单一继承,即一个子类不能直接继承两个父类

可以通过继承两次的方法达到继承多个类的目的。

   class A{
}
class B extends A{
}
class C extends B{ //通过两次继承,C继承了A和B两个类
}
?>

3)当创建子类对象的时候,默认不会自动调用父类的构造方法。

 class A{
//构造方法
public function __construct(){
echo "A__construct";
}
}
class B extends A{
function __construct(){
echo "B__construct";
}
}
//创建对象实例
$b=new B(); //输出B__construct
?>

4)如果希望在子类中调用父类的构造方法或者其它方法(public/protected),可以这样处理(了解即可):

(1)类名::方法名();

(2)parent::方法名();

例:

 class A{
//构造方法
public $n1=90;
public function __construct($n1){
$this->n1=$n1;
echo "A__construct";
}
}
class B extends A{
function __construct(){
echo "B__construct";
//显式的调用父类的方法
//A::__construct(900);
parent::__construct(900);
}
}
//创建对象实例
$b=new B(); //输出B__construct
echo "
".$b->n1; //输出900
?>

5)如果子类(派生类)中的方法与父类(基类)中的方法相同,称之为方法重写/方法覆盖。

URL:http://www.bianceng.cn/webkf/PHP/201610/50463.htm


相关文章
loading......
最新动态
所有评论

loading......

网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册