接口和抽象类的异同

相同点:

  • 均可定义抽象方法

不同点:

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

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容