NO.8 理论五:接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?

Q 抽象类和接口的语法特性?
抽象类不允许被实例化, 只能被继承, 他可以包含属性(实例变量)和方法. 方法既可以包含代码实现也可以不包含代码实现. 不包含代码实现的方法叫做抽象方法, 子类继承抽象类, 必须实现抽象类中的所有抽象方法
接口不能包含属性(实例变量) 只能声明方法, 方法不能包含代码实现, 类实现接口时候必须实现接口中声明的所有方法
这个需要根据具体的编程语言 做具体的区分 比如OC 没有抽象类, 接口方式 使用可选关键字也可以不实现接口中的方法

Q 抽象类和接口存在的意义?
抽象类是队成员变量和方法的抽象, 是一种 is-a的关系, 是为了解决代码复用问题.
接口仅仅是对方法的抽象,是一种has-a的关系, 标识具有某一组行为特性,是为了解决解耦问题, 隔离接口和具体的实现,提高代码的可扩展性

Q 抽象类和接口的应用场景区别
什么时候使用抽象类? 什么时候使用接口? 实际上 判断标准很简单, 如果要表示一种is-a的关系,并且是为了解决代码复用问题, 我们就用抽象类; 如果是要表示has-a的关系, 并且为了解决抽象而非代码复用问题,那我们就用接口.

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

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • 是谁偷走了 我放在床边的泪 那是我心头凝结的水晶 闪烁我内心的小小光亮 我对着这寒风嘶吼 叫他留下一片雪花给我 算...
    素絢阅读 497评论 2 7
  • 绝味鸭脖这回火 ! 弄不好就被这把火 烧烤糊了,从此鸭脖的江湖再无绝味,即使是百足之虫死而不僵,恐怕也是伤筋动骨一...
    流浪的云2JS阅读 476评论 2 3
  • 又到了黄梅季节,潮湿的空气,下雨,下雨,然后仍旧是下不完的雨。以前时常空出时间会好好写点东西,整理想绪,现在这样的...
    芦间一支木阅读 457评论 2 3
  • 我的故乡她不美,该怎么形容她—— BC《故乡》 时隔十数年,念兹在兹,漫步成都的街头,是别样一番景,别样一番情,有...
    了梦一川阅读 145评论 0 1