php抽象类

  • 抽象方法必须被子类继承实现,所以不能为私有,只能是受保护的或公有的;
  • 抽象类子类的方法访问控制级别必须和抽象类相等或更宽松。例如,父类的抽象方法是受保护的,子类实现时则必须为受保护的或者公有的;
  • 抽象方法的实现,必传参数的数量和类型必须严格一致;
  • 抽象类的非抽象方法,子类可不实现,等同于普通类方法的继承;
  • 抽象类中的抽象方法,只能定义,不能实现其方法体;
  • 抽象类可定义常量,且可被子类覆盖;

接口

  • 接口类可以通过extend继承一个或多个接口类,多个接口之间用逗号分隔,用以实现接口类的扩充;
  • 接口类定义的方法必须声明为公有,因此子类的实现方法也只能为公有;
  • 接口方法体必须为空;
  • 接口类定义的常量和类常量私用方式一样,但不能被子类或者子接口覆盖;
  • 普通类通过关键字implements来实现一个或多个接口;
  • 继承多个接口,方法不能有重名;
  • 普通类继承接口,必须实现接口类里面所有的方法,参数也和接口方法定义相同;
  • 可加默认参数,这点和抽象类方法的实现基本一致;

特性

  • 特性与普通类相似,有自己的方法,属性,但不能通过extends继承,也没有类常量;
  • 特性的方法如果和当前类方法冲突,会被当前类的方法覆盖(优先级:当前类>特性类>基类);
  • 一个类加载了多个特性,当多个特性中方法有重名时,需要在代码中通过关键字insteadof设置优先级或通过as关键字重命名处理,否则报错;

php抽象类,接口,特性的比较的更多相关文章

  1. 抽象类&接口

    抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 在Java中抽象 ...

  2. java接口特性

    java接口特性 (1)接口可以被实例化 ,常作为类型使用 (2)实现类必须实现接口的所有方法 ,抽象类除外 (3)实现类可以实现多个几口   java中的多继承 (4)接口中的变量都是静态变量

  3. python 全栈开发,Day21(抽象类,接口类,多态,鸭子类型)

    一.昨日复习 派生方法和派生属性 super 只有在子父类拥有同名方法的时候, 想使用子类的对象调用父类的方法时,才使用super super在类内 : super().方法名(arg1,..) 指名 ...

  4. python面向对象 : 抽象类(接口类),多态,封装(私有制封装)

    一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对 ...

  5. 面向对象的理解 抽象类&接口

    一.关于面向对象 1.什么是面向对象     在解释面向对象之前,先说说面向过程.学过C的同学都知道,C就是面向过程的一种语言.那什么是面向过程呢?比方说组装主机,对于面向过程,需要从0开始.买cpu ...

  6. 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait

    [源码下载] 速战速决 (4) - PHP: 类基础, 抽象类, 接口, trait 作者:webabcd 介绍速战速决 之 PHP 类基础 抽象类 接口 trait 示例1.类的相关知识点 1(基础 ...

  7. 【学习笔记】--- 老男孩学Python,day18 面向对象------抽象类(接口类), 多态, 封装

    抽象类,接口类 Python没有接口这个概念 抽象类(接口类): 目的是制定一个规范 要学会归一化设计,有重复的东西就要想把它们合并起来 from abc import ABCMeta, abstra ...

  8. “全栈2019”Java第一百零六章:匿名内部类与抽象类接口注意事项

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. 面向对象 继承 抽象类 接口 static 权限修饰符

    Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...

  10. python day - 19 抽象类 接口类 多态 封装

    一. 抽象类接口类即制定一个规范 特点: 1.不可被实例化. 2.规范子类当中必须事先某个方法. 3.在python中有原生实现抽象类的方法,但没有原生实现接口类的方法. 例题:制定一个规范就是,子类 ...

随机推荐

  1. Java文件字节流

    //输出和输入流 package com.kangkang.IO; import com.sun.xml.internal.ws.util.xml.CDATA; import java.io.File ...

  2. Kubernetes - Kubelet TLS Bootstrapping

    一.简单说明 写这个的初衷是自己搜索TLS Bootstrapping的时候没有搜到自己想要的东西,因为TLS Bootstrapping经过很多版本之后也发生了一些变化,所以网上很多也是老的内容了. ...

  3. Java 读取Word文本框中的文本/图片/表格

    Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...

  4. 由于makefile编译所有子目录中 sed 's,/($*/)/.o[ :],/1.o $@ : ,g' <$@ > $@ 的解释

    这个语句分为好几层,我们一层一层来看 1. sed 's,/($*/)/.o[ :],/1.o $@ : ,g' <$@ > $@ 首先看加粗这一层,$@表示目标参数中的.d文件, '&l ...

  5. RocketMQ安装配置过程

    官网 官方网站:http://rocketmq.apache.org 下载源码包:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.8.0/r ...

  6. django框架如何解决跨域问题

    跨域问题的由来 由于浏览器具有同源策略的限制. 限制:在发送Ajax请求时,如果当前浏览器的URL是a.com,页面中向b.com发送Ajax请求,请求可以正常访问,但数据回到浏览器时,浏览器会阻止. ...

  7. FreeBSD 将降低对 i386 架构的支持力度

    FreeBSD 开发团队宣布,从 FreeBSD 13.0 开始,对 i386 架构的支持级别将降级为 Tier 2,未来的 14.0 可能还将会在此基础上进一步降低对 i386 架构的支持.而对于 ...

  8. Lzzy高级语言程序设计之for循环

    public class Mq { public static void main(String[]args){ int a = 3 ; a++;// do{ System.out.println(& ...

  9. 现代c++模板元编程:遍历tuple

    tuple是c++11新增的数据结构,通过tuple我们可以方便地把各种不同类型的数据组合在一起.有了这样的数据结构我们就可以轻松模拟多值返回等技巧了. tuple和其他的容器不同,标准库没有提供适用 ...

  10. 开发C语言的3款神器,VS2019、VScode和IntelliJ Clion

    一.Visual Studio 2019环境安装配置+代码调试 环境安装配置 首先我们要在Visual Studio官方网站去下载安装包 进入官网后会发现有三种版本可供下载,分别是社区版.专业版和企业 ...