接口与抽象类的区别

2018/09/05 14:32
阅读数 151

1:在开发中,一个类永远不要去继承一个已经实现好的类,要么继承抽象类,要么实现接口,如果两个类同时都
可以使用的话,优秀使用接口,避免单继承的局限。

2:含有内部接口的抽象类的子类,必须也要定义内部类继承该接口。

3:含有内部抽象类的接口,对于继承他的子类来说,除了要覆写接口中的抽象方法,还要专门定义一个内部类继承抽象类,并覆写全部抽象类。

总结

1)抽象类和接口类的实例化,通过多态性(向上转型,向下转型)。

2)抽象类表示一个模板,接口表示一个标准。

3)常见的设计模式:模板设计,工厂设计,代理设计,适配器设计。

 

https://blog.csdn.net/xiaoliuliu2050/article/details/61931498

语义上的区别:

首先 类描述的是 这个东西是什么(强调所属)?包含了静态属性,静态行为 ,属性和行为。

而接口 描述的它能做什么事儿(强调行为)?     只是 静态常量属性 和 行为



abstract class的应用场合
      一句话,在既需要统一的接口,又需要实例变量或缺省的方法的情况下,就可以使用它。最常见的有:
      A. 定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。可以用abstract class定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。
      B. 某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。abstract的中介作用可以很好地满足这一点。
      C. 规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能


其他情况下都是使用 接口。

应该这样说,我们再开始使用的时候就是用的接口,后来实现的子类里有些子类有共同属性,或者相同的方法实现,所以提取出来一个抽象类,作为类和接口的中介。

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部