php类和对象 :继承

继承 :

面向对象编程方式最大的优点之一就是,可以使一个类继承并拥有另一个已存在类的成员变量和成员方法,其中被继承的类称为父类,继承的类称为子类。子类继承父类以后便获得父类所有的成员变量和成员方法。通过继承能够提高代码的重用性,以及可维护性。

通过类的继承,子类不仅可以拥有新定义的成员变量和成员方法,而且还具有父类所有的成员变量和成员方法。语法格式如下:

class  子类名称  extends  父类名称 {
     //子类的成员变量列表
     function  成员方法1([参数1,参数2,……]){
     //成员方法1的具体实现
     }
     function  成员方法2([参数1,参数2,……]){
     //成员方法2的具体实现
     }
//其他成员方法
}

下面创建一个Student类,使其继承于已经存在的People类,代码如下:

class  People{
     function  __construct( $name , $age ){
         $this ->name= $name ;
         $this ->age= $age ;     
     }
     function  say(){
         echo  "姓名:" . $this ->name. " " ;
         echo  "年龄:" . $this ->age;
         echo  " " ;
     }
     function  __destruct(){}
}
class  Student  extends  People {
     function  study( $lang ){
         echo  "我正在整理" . $lang . "……" ;
     }
}
$student = new  Student( "大兵" ,25);
$student ->say();
$student ->study( "PHP基础知识" );

该代码执行结果为:
姓名:大兵 年龄:25
我正在整理PHP基础知识……

parent::关键字

关键字parent::用来表示父类和要调用的父类中的成员方法,语法格式如下:

parent::父类的成员方法([参数1,参数2,……])

下面使用parent::关键字调用父类People中的构造方法的例子,代码如下:

class  People{
     function  __construct( $name ){
         $this ->name= $name ;   
     }
     function  __destruct(){}
}
class  Student  extends  People {
     function  __construct( $name , $age ){
         parent::__construct( $name );
         $this ->age= $age
     }
     function  say(){
     echo  "姓名:" . $this ->name. " " ;
     echo  "年龄:" . $this ->age;
     echo  " " ;
     }
     function  study( $lang ){
         echo  "我正在整理" . $lang . "……" ;
     }
     function  __destruct(){}
}
$student = new  Student( "大兵" ,25);
$student ->say();
$student ->study( "PHP基础知识" );

该代码执行结果为:
姓名:大兵 年龄:25
我正在整理PHP基础知识……

instanceof运算符

检测当前对象实例是否属于一个类可以使用instanceof运算符,它将返回一个布尔值,语法格式如下:

对象名称  instanceof  类名称

 

覆盖父类方法

在子类中可以根据需要对从父类继承来的方法进行覆盖,也叫方法的重写。在进行方法覆盖时要求覆盖方法和被覆盖方法具有相同的方法名称、参数列表和返回值类型。
下面是实现子类Student覆盖父类People的say()方法的例子,代码如下:

class  People{
     function  __construct( $name , $age ){
         $this ->name= $name ;
         $this ->age= $age ;     
     }
     function  say(){
         echo  "姓名:" . $this ->name. " " ;
         echo  "年龄:" . $this ->age;
         echo  " " ;
     }
     function  __destruct(){}
}
class  Student  extends  People {
     function  say( $lang ){
         echo  $this ->name.  "正在整理" . $lang . "……" ;
     }
}
$student = new  Student( "大兵" ,25);
$student ->say( "PHP基础知识" );

该代码执行结果为:
大兵正在整理PHP基础知识……

转载于:https://www.cnblogs.com/liqingbo/p/4824493.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值