首页> 基础笔记 >PHP基础学习 >面向对象 面向对象

PHP面向对象类继承的应用

作者:小萝卜 2019-09-01 浏览 946

简介类继承的应用,子类与父类的属性与方法,继承已为大家所熟知的一个程序设计特性,PHP 的对象模型也使用了继承。继承将会影响到类与类,对象与对象之间的关系。 比如,当扩展一个类,子类就会继承父类的所有公有和保护方法。但是子类的方法会覆盖父类的方法。

类继承的应用

继承已为大家所熟知的一个程序设计特性,PHP 的对象模型也使用了继承。继承将会影响到类与类,对象与对象之间的关系。 
比如,当扩展一个类,子类就会继承父类的所有公有和保护方法。但是子类的方法会覆盖父类的方法。 
继承对于功能的设计和抽象是非常有用的,而且对于类似的对象增加新功能就无须重新再写这些公用的功能。
php继承的关键字:extends
格式:
[修饰符] class 子类名 extends 父类名
{
     ...
 }

类的继承

PHP只支持单继承,不允许多重继承。一个子类只能有一个父类,不允许一个类直接继承多个类,但一个类可以被多个类继承。可以有多层继承,即一个类可以继承某一个类的子类,如类B 继承了类A,类C又继承了类B,那么类C也间接继承了类A,
    class A{
       ....
    }
    class B  extends A{
       ....
    }
    class C  extends B{
       ....
    }

例如:
<?php
//类的继承:extends

class A{
    public $name="qq";
    public $num = 20;
    
    public function demo(){
        echo "aaaaaaaaaaaaa<br/>";
    }
}

//定义一个子类,子类会继承父类中的属性和方法
class B extends A{
    
}

//使用 子类
$b = new B();
echo $b->name;
echo $b->num;

$b->demo();


子类与父类的属性与方法

子类继承父类的所有内容,但父类中的private部分不能直接访问
子类中新增加的属性和方法是对父类的扩展
子类中定义的与父类同名的属性是对父类属性的覆盖,同名的方法也是对父类方法的覆盖

例如:
<?php
//子类的扩展

class A{
    public function fun1(){
        echo "class A fun1()...<br/>";
    }
    public function fun2(){
        echo "class A fun2()...<br/>";
    }
}

class B extends A{
    //在子类中定义一个父类没有的方法,称扩展
    public function fun3(){
        echo "class B fun3()...<br/>";
    }
    
    //在子类中定义一个和父类一样的方法(方法覆盖,重写),称升级(更新)。
    public function fun2(){
        echo "class B fun2()....<br/>";
    }
    
    public function old_fun2(){
        parent::fun2(); //调用被子类覆盖掉了的方法
    }
}

 

很赞哦! (0)

文章评论

    高端网站建设