详细对比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 相关文章推荐
ThinkPHP实现事务回滚示例代码
Jun 23 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
PHP获取表单所有复选框的值的方法
Aug 28 PHP
PHP间隔一段时间执行代码的方法
Dec 02 PHP
php使用Cookie控制访问授权的方法
Jan 21 PHP
PHP实现递归无限级分类
Oct 22 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
PHP中单例模式与工厂模式详解
Feb 17 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
PHP自动载入类文件函数__autoload的使用方法
Mar 25 PHP
在laravel框架中实现封装公共方法全局调用
Oct 14 PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 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 编写大型网站问题集
2010/05/07 PHP
请离开include_once和require_once
2013/07/18 PHP
Add a Table to a Word Document
2007/06/15 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
微信小程序-form表单提交代码实例
2019/04/29 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
微信小程序canvas动态时钟
2020/10/22 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
pygame学习笔记(4):声音控制
2015/04/15 Python
Python延时操作实现方法示例
2018/08/14 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
通过实例学习Python Excel操作
2020/01/06 Python
法学研究生自我鉴定范文
2013/12/04 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
迎国庆演讲稿
2014/09/05 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
解除合同协议书范本
2016/03/21 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL