5G|接口和抽象类有什么区别?

5G|接口和抽象类有什么区别?

语法层面上来说:

  1. 抽象类可以提供成员方法的实现细节(多个方法) , 抽象类在1.8(不包含1.8)之前不能提供实现细节 , 1.8之后可以通过默认方法来提供一个默认的实现方法 。
  2. 抽象类的成员变量可以是各种类型的 , 而接口中的成员变量只能是publicstatci final修饰的
  3. 抽象类中可以包含静态方法和静态代码块 , 而接口不行
  4. 抽象类只能继承一个父类 , 而一个类可以实现多个接口
设计层面上来说:
  1. 抽象类出现就是为了被继承 , 它的设计属于模板式的设计 。 接口设计出来是为了组合使用 , 是一种行为规范 , 属于辐射式设计 。
  1. 抽象类是对事物的抽象 , 接口是对行为的抽象 。 举个简单的例子 , 鸟是动物 , 这个动物就是抽象类;而鸟会飞 , 这个能不能飞的能力就是一个接口 。
(模版式设计:类似ppt模板 , 我们自己的内容只需要创建这个模板的实例然后改改内容 , 整体框架不变 , 如果要改动整体框架公共部分 , 只需要在模板上改动就行 。
辐射式设计:例如手机上5g模块 , 有的手机装了有的手机没装 , 如果我们要升级5g模块的代码的话 , 那么所有装了5g模块的手机都要改动代码)
一般来说 , 我们这样判断这个类该使用抽象类还是接口 。
  • is-a:满足is-a关系我们使用继承 , 例如:玻璃杯、塑料杯都是杯子
  • like-a:满足like-a关系我们使用接口 , 例如:空调继承于制冷机 , 但它同时有加热功能 , 那么你应该把让空调继承制冷机类 , 并实现加热接口 。
\uD83D\uDE4F如果内容对您有帮助 , 希望您能点赞收藏加关注 , 激励作者创作出更加优质内容 , 感谢!\uD83D\uDE4F
【5G|接口和抽象类有什么区别?】

    相关经验推荐