美文网首页
接口和抽象类

接口和抽象类

作者: kindol | 来源:发表于2018-07-30 23:14 被阅读0次

    共同点:

    1. 都是上层的抽象层
    2. 都不能被实例化

    不同:

    1. 抽象类可以实现方法,接口不行(除了default关键字的方法)

    2. 一个类只能继承一个父类,接口可以实现多个
      java语言中类的继承是单继承的原因:解决C++多继承带来的问题,使得程序更加安全

      而接口却可以多继承,因为接口中只有抽象方法,没有静态方法和非常量的属性,只有接口的实现类才会重写接口中方法。因此一个类有多个接口也不会增加JVM的绑定机制和复杂度。

      对于已经存在的继承树,可以方便的从类中抽象出新的接口,但是从类中抽象出新的抽象类就不那么容易了,因此接口更有利于软件系统的维护和重构。

    3. 接口和抽象类的设计目的不一样。接口是对动作的抽象,而抽象类是对根源的抽象。举个例子:人可以走和跳,如果是抽象类,那就包含两个方法,而接口可以将这两个方法独立开来,更加有利于解耦合。从这个意义算起来,接口的抽象程度高于抽象类

    4. Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。

    5. Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。

    相关文章

      网友评论

          本文标题:接口和抽象类

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