面向对象复习之抽象类和接口

         在学习设计模式时,经常用到抽象类和接口,但似乎自己对这些概念是有一点模糊的,于是拿出来重新复习下。

         先来说下抽象类,抽象类是父类的模版,通过定义一个抽象类,可以指明类的一般行为,一个抽象类定义了接口:这个基类的继承类如何被使用,然后子类负责这些接口的实现。

        抽象类和普通类的最大区别在于,如果试图从抽象类创建一个对象,将会出现一个致命错误。

        抽象类用关键字abstract定义。

        在扩展的类里实现抽象方法的时候,其可见性必须高于或等于抽象方法定义的可见性,方法的实现版本也必须要和抽象方法的定义具有一样数目的参数,如果一个类哪怕只有一个抽象方法,那么这个类本身也应该是抽象类。和属性一样,抽象方法需要被派生类继承。

       接口,像抽象类一样,定义必须被特定类定义的功能接口。

       接口和抽象类的区别:抽象类和它的继承类之间有一种“是一个”is a的关系,接口和它的继承类之间有一个“有相同行为”的关系。一个抽象类意味着会被扩展为一个特定的类,一个接口不能被一个类继承。

      接口中所有的方法必须是公开的即public的,接口只是定义了方法,但是没有包括属性。

        定义接口使用关键字interface,php的类不能从多个父类继承,但是可以实现多个接口,使用逗号分隔。

        instanceof操作符可以被用于测试是否一个类实现了一个接口。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、抽象类 1、抽象类含义的概括: 当多个类出现相同功能时,但功能主体不同,这样可以向上抽取,抽取时只抽取功能定义...
    玉圣阅读 861评论 0 6
  • 你很清楚的知道什么时候用抽象类,什么时候用接口么?p.s. 多文字预警! 1 抽象类和接口简介 1.1 抽象类 ...
    Sharember阅读 2,390评论 9 55
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • 最近的“冰桶大战”让世人们认识了ALS这种罕见的疾病,“知乎”也发起了“谈谈罕见病的体验和感受”这一话题征集活动,...
    出锦阅读 1,233评论 8 7
  • 这世间哪有什么刀枪不入,全靠义无反顾地在咬牙坚持,这世间哪有什么互帮互助,都是虎视眈眈地在恃强凌弱。 存活于这世间...
    方隅一见阅读 564评论 0 2