详细对比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 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
php 编写安全的代码时容易犯的错误小结
May 20 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
php计算一个文件大小的方法
Mar 30 PHP
php替换字符串中间字符为省略号的方法
May 04 PHP
php实现递归的三种基本方式
Jul 04 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
thinkPHP模板中for循环与switch语句用法示例
Nov 30 PHP
PHP扩展类型及安装方式解析
Apr 27 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
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
php 常用的系统函数
2017/02/07 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
JavaScript 学习笔记(六)
2009/12/31 Javascript
js选项卡的实现方法
2015/02/09 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
gulp解决跨域的配置文件问题
2017/06/08 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
python基础教程之基本内置数据类型介绍
2014/02/20 Python
基于Python的身份证号码自动生成程序
2014/08/15 Python
Python实现多线程HTTP下载器示例
2017/02/11 Python
python logging日志模块的详解
2017/10/29 Python
pycharm配置git(图文教程)
2019/08/16 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
英语演讲稿范文
2014/01/03 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
2014国庆节国旗下演讲稿(精选版)
2014/09/26 职场文书
公安局副政委班子个人对照检查材料
2014/10/04 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
党风廉政建设个人总结
2015/03/06 职场文书
行政前台岗位职责
2015/04/16 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书