美文网首页Java
接口和抽象类的异同

接口和抽象类的异同

作者: jasperchen | 来源:发表于2020-02-26 21:07 被阅读0次

    相同点:

    • 均可定义抽象方法

    不同点:

    • 抽象类中可以有抽象方法用abstract修饰, 不可用private. 也可以有非抽象的方法
    • 接口类中所有的方法都只能是抽象方法(从Java8 开始, 接口类中的方法可以有默认实现, 用default关键字修饰)
    • 接口类中的属性都只能是final static.
      为什么接口类中的属性只能是final static?
      接口本来就是高度抽象的类, 其中定义的属性不应该被修改. 而且其中的属性是对于所有实现了该接口的类所共同所有, 一旦修改, 即对所有的类都修改. 没有任何意义. 而用static修饰是因为接口类无法实例化, 如果想要调用其属性, 只能通过类来调用, 所以要加上static.
    • 由于抽象方法一般用public, protected, default来修饰, 不可用private修饰. 因为抽象方法本来就是为了被重写, 如果用private修饰的话, 就无法进行重写了

    注: 当一个类同时实现了两个接口时, 并且两个接口中有同名的默认实现方法, 则该类需要重写该默认方法.

    相关文章

      网友评论

        本文标题:接口和抽象类的异同

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