最近去面试,面试官问到一个平常自己不留意和学习那时候还没有非常清晰的分清楚的问题就是抽象和接口的问题面试官问到:
抽象类和接口有什么区别, 什么情况用抽象,什么情况用接口?
如果本身是接口的类把它换成抽象可以不,如果本身是抽象类把它换成接口,可以不?请说明
这一问 就把我问到了, 对方不给我念书本上的概念, 我就随便说了
想数据库驱动的那些 就用接口, 如果有相同功能的比如 同样的 增删改查 就抽象出来。 但面试官的表情不太好请高手问指点一下, 谢谢!

解决方案 »

  1.   

    抽象类是含有为实现的方法!接口是方法都没实现!含有未实现的方法定义为抽象类,方法全部未实现定义为接口!本身为抽象类不可以换成接口!本身为接口类也不可以换成抽象类!
      

  2.   

    1:抽象类和接口有什么区别, 什么情况用抽象,什么情况用接口?
    接口中只可以有抽象方法和常量, 而抽象类中可以有非抽象方法和一些成员变量! 需要给子类提供方法或者变量时的方法的时候应该使用抽象类, 而相反就使用接口!2:如果本身是接口的类把它换成抽象可以不,如果本身是抽象类把它换成接口,可以不?请说明
    参照第一题答案个人理解,非标答
      

  3.   

    我个人在工作中, 一般用 抽象类 作为 公共部分 抽取出来
    然后 让不同的子类去继承ta, 就像一个模板方法那样子
    接口的话, 我个人觉得就像 我定义了一个标准 让其他人实现