美文网首页
接口和抽象类

接口和抽象类

作者: Seven_DQ | 来源:发表于2018-08-08 18:06 被阅读0次

之前在面试的时候,有遇到问接口和抽象类的区别。虽然自己用了很多的借口和抽象类,但是对于两种的理解还是不够高,所以自己再总结总结。

1.抽象类

抽象类定义:

 [public] abstract class ClassName {
     abstract void fun();
 }

抽象类需要abstract关键字,类成员可以有成员变量,有具体方法,静态方法,静态常量,有抽象方法(需要关键字abstract)
不能创建对象,而且抽象方法不能是private,因为私有的就不能继承了,抽象类就是用来继承,不让要他有何用,默认不写是public


2.接口

接口定义:

 [public] interface InterfaceName{
 }

接口狭义来说就是一个对外提供的方法,广义来说就是系统之间对接的端口
接口里可以有方法(抽象方法),变量(只能是public,而且会被隐式地指定为public static final变量),一般接口中不会定义变量的


3.区别:

a.一个类可以实现多接口,但只能继承一个抽象类
b.类实现接口,必须实现接口里所有方法;类继承抽象类,也是必须实现抽象类中所有抽象方法,但是抽象类实现接口时,不需要实现所有方法
c.抽象类可以提供正常方法,对于这一点,抽象类的扩展要比接口好。比如,在抽象类中定一个正常方法,他的子类不需要改动代码就有了这个方法,而在接口中定义一个方法,而实现它的类都得去实现这个方法,所以在一定程度上抽象类要比接口好
d.在设计上,接口是对行为的抽象,比如飞,跑等等;而抽象类是对物的抽象,即类的抽象,比如动物,鸟类这些;结合a和c就可以把接口和抽象类的有点结合起来,这就是缺省适配模式:定义一个InterfaceA接口;定义一个AbstractA接口实现InterfaceA;而A类实现InterfaceA接口和继承AbstractA类,具体想了解可以google缺省适配模式;也可以java中的API,我影响比较深的集合的设计就用到这种设计模式


4.参考:

https://www.cnblogs.com/dolphin0520/p/3811437.html
https://blog.csdn.net/xw13106209/article/details/6923556
https://blog.csdn.net/xw13106209/article/details/6926253

相关文章

  • 5.5-全栈Java笔记:接口的定义和使用

    接口interface 接口的作用 为什么需要接口?接口和抽象类的区别? 接口就是比“抽象类”还“抽象”的“抽象类...

  • java的final关键字

    ——修饰类、接口和抽象类 final可以修饰方法,属性,类!但是不能修饰接口,抽象类;因为 接口和抽象类本身就是...

  • 接口和抽象类的区别

    接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样。接口是对动作的抽象,抽象类...

  • 抽象类和接口的区别

    以下两篇文章介绍了接口和抽象类的概念接口概念抽象类概念 抽象类和接口的区别: 抽象类:需要使用abstract关键...

  • 接口和抽象类

    接口和抽象类的区别? 接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制...

  • Android_开发_Day12_抽象类和接口

    Android_开发Day12抽象类和接口 目的: 知道什么是抽象类,什么是接口,学会抽象类的使用,与接口的使用。...

  • Java--接口和抽象类

    ·为什么需要接口?接口和抽象类的区别?  接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束...

  • Kotlin 零基础学习 接口和抽象类

    接口:接口就是暴露一种物体与另外一种物体沟通的方法 抽象类 接口 这么看接口和抽象类没什么区别,抽象类能干的接口也...

  • 接口,抽象类,工厂设计模式,代理模式

    一、接口的结构: 抽象方法 全局常量 最终写法: 其他内部结构内部类内部抽象类内部接口 二、接口和抽象类 抽象类可...

  • 接口跟抽象类的对比

    抽象类和接口的区别抽象类被子类继承 接口被类实现接口可以做方法生命 抽象类可以做方法生命 也可以做方法实现接口中定...

网友评论

      本文标题:接口和抽象类

      本文链接:https://www.haomeiwen.com/subject/boyovftx.html