码迷,mamicode.com
首页 > 其他好文 > 详细

接口与抽象类的区别

时间:2019-12-21 09:29:04      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:约束   生产   使用   接口与抽象类   消费者   public   实体   pen   情况   

介绍

开闭原则

开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。

抽象类

概述: 在面向对象的概念中,所有的对象都是通过类来描绘的。而当需要更多信息来 描述/确定 一个具体的、符合应用场景的对象时,就需要 推迟 确定具体的实现。抽象类 主要针对实体抽象
特点: 抽象类 是一个 未完全实现逻辑 的类,类中可以同时具有 具体实现逻辑抽象逻辑

  • 具体实现逻辑:具体实现方法,成员变量,静态方法等等
  • 抽象逻辑:抽象方法

总结: 具体实现逻辑 提高复用性 ,抽象逻辑 降低耦合 ;抽象类封装确定的,开放不确定的,推迟到合适的子类中去实现

接口

概述: 接口由抽象类进化而来的,可以看作一种契约(协议),约束着服务的生产者和消费者。接口 主要针对动作(方法)抽象
特点: 接口 是一个 完全未实现逻辑 的“类”,只具有 抽象逻辑

  • 抽象逻辑:接口中全都是抽象方法
  • 抽象方法的访问修饰符必须为 public ,因为这标志着对服务的消费者和生产者双方都可见,体现“契约”这个概念

总结: 接口是一种“契约”,将具有共性动作(方法)的类抽象成接口,由接口派生出实现类,减少类之间的依赖带来的紧耦合。借用接口,自底向上完成重构,自顶向下完成设计

区别

设计层面

  • 抽象类 是一个 未完全实现逻辑 的类;接口 是一个 完全未实现逻辑 的“类”
  • 抽象类针对实体抽象;接口针对动作抽象
  • 抽象类和接口都能解耦。抽象类主要为了 复用 ;接口主要为了 解耦 ,相比抽象类解耦更彻底和强力

使用层面

  • 对于一个派生类来说。 抽象类只能被 单继承 ;接口可以被 多实现
  • 抽象类中能有成员变量、具体实现方法、抽象方法等等;接口只能有抽象方法(Java中能有常量)
  • 抽象类中除了抽象方法不能private,其他的成员变量或方法访问修饰符随意;接口中的抽象方法访问修饰符全部为public的
  • 有抽象方法的类必须定义为抽象类,抽象类不一定有抽象方法
  • 抽象类除了涉及抽象有关的部分,和 普通java/C#类 定义基本一致

接口与抽象类的区别

标签:约束   生产   使用   接口与抽象类   消费者   public   实体   pen   情况   

原文地址:https://www.cnblogs.com/zhuang229/p/12026783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!