详细对比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 14 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
May 26 PHP
PHP生成Gif图片验证码
Oct 27 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
Jul 03 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
Aug 08 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP多维数组排序array详解
Nov 21 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 PHP
php定期拉取数据对比方法实例
Sep 22 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 和 MySQL 基础教程(三)
2006/10/09 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
详解webpack解惑:require的五种用法
2017/06/09 Javascript
react redux入门示例
2018/04/19 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
[03:05]DOTA2英雄基础教程 嗜血狂魔
2013/12/10 DOTA
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
python实现淘宝购物系统
2019/10/25 Python
Python面向对象编程基础实例分析
2020/01/17 Python
Python爬虫入门教程01之爬取豆瓣Top电影
2021/01/24 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
幼儿园安全责任书
2014/04/14 职场文书
扬尘污染防治方案
2014/06/15 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
旗帜观后感
2015/06/08 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers