详细对比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 相关文章推荐
mac下使用brew配置环境的步骤分享
May 23 PHP
php登陆页的密码处理方式分享
Oct 14 PHP
php中引用符号(&amp;)的使用详解
Nov 13 PHP
PHP类的声明与实例化及构造方法与析构方法详解
Jan 26 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
php+jQuery递归调用POST循环请求示例
Oct 14 PHP
php unicode编码和字符串互转的方法
Aug 12 PHP
PHP批量修改文件名称的方法分析
Feb 27 PHP
php实现的二叉树遍历算法示例
Jun 15 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 PHP
php变量与字符串的增删改查操作示例
May 07 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
Nov 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模板技术原理【一】
2008/01/10 PHP
php版小黄鸡simsimi聊天机器人接口分享
2014/01/26 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
js left,right,mid函数
2008/06/10 Javascript
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
jQuery链使用指南
2015/01/20 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
python将图片文件转换成base64编码的方法
2015/03/14 Python
使用Python中的cookielib模拟登录网站
2015/04/09 Python
python单元测试unittest实例详解
2015/05/11 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
如何通过50行Python代码获取公众号全部文章
2019/07/12 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
教师先进个人材料
2014/12/17 职场文书
家长会主持词开场白
2015/05/29 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
HTML中的表格元素介绍
2022/02/28 HTML / CSS