详细对比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错误提示的关闭方法详解
Jun 23 PHP
php获取数组中重复数据的两种方法
Jun 28 PHP
PHP分页类集锦
Nov 18 PHP
PHP变量赋值、代入给JavaScript中的变量
Jun 29 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
PHP+JS三级菜单联动菜单实现方法
Feb 24 PHP
PHP实现对二维数组某个键排序的方法
Sep 14 PHP
php rsa 加密,解密,签名,验签详解
Dec 06 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
Laravel 添加多语言提示信息的方法
Sep 29 PHP
php输出文字乱码的解决方法
Oct 04 PHP
数据结构之利用PHP实现二分搜索树
Oct 25 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
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
跟我学Laravel之快速入门
2014/10/15 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
JS 树形递归实例代码
2010/05/18 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
Python使用贪婪算法解决问题
2019/10/22 Python
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
英国女性化妆品收纳和家具网站:Beautify
2019/12/07 全球购物
受欢迎的大学生自我评价
2013/12/05 职场文书
工商治理实习生的自我评价分享
2014/02/20 职场文书
优秀食品类广告词
2014/03/19 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
2016公司新年问候语
2015/11/11 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis