详细对比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文件的实现方法
Mar 19 PHP
php 生成WML页面方法详解
Aug 09 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
Feb 16 PHP
PHP foreach循环使用详解与实例代码
May 08 PHP
一个简洁实用的PHP缓存类完整实例
Jul 26 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
php四种定界符详解
Feb 16 PHP
thinkPHP实现基于ajax的评论回复功能
Jun 22 PHP
Laravel框架源码解析之入口文件原理分析
May 14 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
PHP与javascript对多项选择的处理
2006/10/09 PHP
PHP4中session登录页面的应用
2008/07/25 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
当jquery ajax遇上401请求的解决方法
2016/05/19 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
bootstrap Table服务端处理分页(后台是.net)
2017/10/19 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
Python 条件判断的缩写方法
2008/09/06 Python
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
pandas如何处理缺失值
2019/07/31 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
学校评语大全
2014/05/06 职场文书
运动会标语
2014/06/21 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
检讨书范文300字
2015/01/28 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
golang switch语句的灵活写法介绍
2021/05/06 Golang