详细对比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 相关文章推荐
模拟SQLSERVER的两个函数:dateadd(),datediff()
Oct 09 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
Nov 10 PHP
深入file_get_contents函数抓取内容失败的原因分析
Jun 25 PHP
ThinkPHP分页类使用详解
Mar 05 PHP
Yii调试SQL的常用方法
Jul 09 PHP
php简单生成随机数的方法
Jul 30 PHP
Symfony2学习笔记之控制器用法详解
Mar 17 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
php实现登陆模块功能示例
Oct 20 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
PHP array_reverse() 函数原理及实例解析
Jul 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
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
php对象工厂类完整示例
2018/08/09 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
nodejs爬虫抓取数据之编码问题
2015/07/03 NodeJs
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
python正则匹配抓取豆瓣电影链接和评论代码分享
2013/12/27 Python
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
python决策树之CART分类回归树详解
2017/12/20 Python
python学生管理系统学习笔记
2019/03/19 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
django创建css文件夹的具体方法
2020/07/31 Python
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
离婚协议书标准格式
2014/10/04 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang