详细对比php中类继承和接口继承


Posted in PHP onOctober 11, 2018

PHP类继承:

1、PHP类不支持多继承,也就是子类只能继承一个父类,但是支持多层次继承

比如:

class frist{
  public function __construct(){
    echo "我是第一个类。","<br>";
  }
  public function printer(){
    echo "frist","<br>";
  }
}
class seconds extends frist{}
class third extends seconds{}
$obj = new third();
$obj->printer();

结果:这是第一个类。 frist 第二个类和第三个类没有重写printer()方法,第三个类实例化后可以调用printer()方法。

2、继承权限问题

(1)父类private方法不可被继承,父类私有化

(2)父类protected方法可以被继承,但不能被实例化对象调用,如果调用会出现" Call to protected method frist::printer()"的报错,父类对此方法置于保护模式下

(3)父类public方法可以被继承、可以被实例化对象调用,属于公开方法

(4)子类可重写父类public或者protected的方法,不能重新private的方法,如果同名只是在本类重新声明

3、接口类继承

(1) 接口支持多继承,接口类的方法不需要实现比如:

interface frist{
  public function ex1();
}
interface seconds{
  public function ex2();
}
interface third extends frist,seconds{
  public function ex3();
}
class fourth implements third{
  public function ex1(){}
  public function ex2(){}
  public function ex3(){}
}
class fourth implements frist,seconds{
  public function ex1(){}
  public function ex2(){}
}

(2) 接口类的方法权限都是public,默认public

(3)引用接口的类必须实现接口的所有方法,否则会报错,比如:"Class e contains 1 abstract method and must therefore be declared abstract or implement the remaining methods",即:e类包含1个抽象方法,因此必须声明抽象或实现其余方法。

4、抽象类:只要一个类里面有一个方法是抽象方法,那么这个类就要定义为抽象类

(1)抽象类继承抽象类不能重写父类方法。

(2)抽象类继承是对父类的方法的拓展。

(3)继承的派生类当中要把所有抽象方法重载才能实例化。

(4)抽象类实现的普通发放,可以在非抽象子类中直接调用。

5、接口和抽象类的异同点(引用抽象类与接口区别)

(1)对接口的使用方式是通过关键字implements来实现的,而对于抽象类的操作是使用类继承的关键字exotends实现的

(2) 接口没有数据成员,但是抽象类有数据成员,抽象类可以实现数据的封装。

(3) 接口没有构造函数,抽象类可以有构造函数。

(4)接口中的方法都是public类型,而抽象类中的方法可以使用private、protected或public来修饰。

(5) 一个类可以同时实现多个接口,但是只能实现一个抽象类。

(6) 相同点:函数体内不能写任何东西,比如:function getName();即可。

PHP 相关文章推荐
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 PHP
PHP分多步骤填写发布信息的简单方法实例代码
Sep 23 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
php设置静态内容缓存时间的方法
Dec 01 PHP
php定时执行任务设置详解
Feb 06 PHP
Laravel5中contracts详解
Mar 02 PHP
php编写批量生成不重复的卡号密码代码
May 14 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
PHP中__autoload和Smarty冲突的简单解决方法
Apr 08 PHP
简单理解PHP的面向对象编程方式
May 17 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
May 20 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
PHP JWT初识及其简单示例
Oct 10 #PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
Oct 10 #PHP
php实现单笔转账到支付宝功能
Oct 09 #PHP
php实现小程序支付完整版
Oct 09 #PHP
php实现微信企业付款到个人零钱功能
Oct 09 #PHP
php实现构建排除当前元素的乘积数组方法
Oct 06 #PHP
php微信公众号开发之微信企业付款给个人
Oct 04 #PHP
You might like
ASP知识讲座四
2006/10/09 PHP
领悟php接口中interface存在的意义
2013/06/27 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
CodeIgniter钩子用法实例详解
2016/01/20 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
jquery 之 $().hover(func1, funct2)使用方法
2012/06/14 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
Python删除空文件和空文件夹的方法
2015/07/14 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
python实现多层感知器
2019/01/18 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
python 基于wx实现音乐播放
2020/11/24 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
一个SQL面试题
2014/08/21 面试题
关于母亲节的感言
2014/02/04 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
售后服务承诺函格式
2015/01/21 职场文书
解除同居协议书
2015/01/29 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
PC版《死亡搁浅导剪版》现已发售 展开全新的探险
2022/04/03 其他游戏