详细对比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 项目的方法
Jan 02 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
php中导出数据到excel时数字变为科学计数的解决方法
Feb 03 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
Jun 05 PHP
php unset全局变量运用问题的深入解析
Jun 17 PHP
PHP会话处理的10个函数
Aug 11 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
无需数据库在线投票调查php代码
Jul 20 PHP
PHP构造函数与析构函数用法示例
Sep 28 PHP
thinkPHP实现的省市区三级联动功能示例
May 05 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
PHP大文件分片上传的实现方法
Oct 28 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
JavaScript 字符串连接性能优化
2008/12/20 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
将angular-ui的分页组件封装成指令的方法详解
2017/05/10 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
使用python生成目录树
2018/03/29 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
专业销售业务员求职信
2013/11/18 职场文书
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
Python 多线程处理任务实例
2021/11/07 Python
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android
使用Python解决图表与画布的间距问题
2022/04/11 Python