详细对比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 相关文章推荐
模拟OICQ的实现思路和核心程序(二)
Oct 09 PHP
PHP脚本的10个技巧(3)
Oct 09 PHP
PHP 中英文混合排版中处理字符串常用的函数
Apr 12 PHP
php 取得瑞年与平年的天数的代码
Aug 10 PHP
php-cli简介(不会Shell语言一样用Shell)
Jun 03 PHP
php中使用url传递数组的方法
Feb 11 PHP
PHP实现数据分页显示的简单实例
May 26 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
PHP调用Mailgun发送邮件的方法
May 04 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
Dec 21 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安装问题
2006/10/09 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
javascript创建动态表单的方法
2015/07/25 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
Python 通过URL打开图片实例详解
2017/06/01 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
Python imread、newaxis用法详解
2019/11/04 Python
python向图片里添加文字
2019/11/26 Python
python多进程重复加载的解决方式
2019/12/13 Python
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
机械专业个人求职自荐信格式
2013/09/21 职场文书
工作人员思想汇报
2014/01/09 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
初一学生期末评语
2014/04/24 职场文书
安全目标责任书
2014/07/22 职场文书
硕士学位论文评语
2014/12/31 职场文书
解约证明模板
2015/06/19 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
frg-100简单操作(设置)说明
2022/04/05 无线电
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript