Java中抽象类、接口、实现类的区别

接口、抽象类、实现类的区别


接口

  • 接口中的所有属性都必须是常量(即被public static final修饰)。
  • 接口中的所有方法都必须是抽象方法(在Java 8及以后,接口中可以包含默认方法和静态方法,但这些方法也必须有具体实现或逻辑,只是不强制要求实现类实现它们)。
  • 接口不能被实例化。
  • 接口支持多继承,即一个接口可以继承多个其他接口。
  • 接口主要用于定义对象的行为,而不涉及行为的具体实现。

抽象类

  • 抽象类中可以存在抽象方法,也可以存在具体实现的方法。
  • 抽象类中的抽象方法必须由子类实现(除非子类也是抽象类)。
  • 抽象类可以有实例变量和实例方法的实现。
  • 抽象类只能被其他类继承,且继承抽象类的子类必须实现其所有抽象方法,或者子类也必须是抽象类。
  • 抽象类支持单继承,即一个类只能继承一个抽象类。
  • 抽象类主要用于定义一种模板或框架,供子类继承和扩展。

实现类

  • 实现类可以被实例化。
  • 实现类必须实现接口中的所有方法,或者继承抽象类并提供所有抽象方法的实现。
  • 实现类可以添加自己的属性和方法,以扩展其功能。
  • 实现类遵循接口或抽象类定义的规范或框架,但也可以添加额外的功能或行为。

接口和抽象类的区别

  • 接口中所有的方法隐含都是抽象的,而抽象类则可以同时包含抽象和非抽象的方法
  • 类可以实现很多个接口,但是只能继承一个抽象类
  • 类可以不实现抽象类和接口声明的所有方法,在这种情况下,类也必须得声明成是抽象的
  • 抽象类可以在不提供接口方法实现的情况下实现接口
  • java接口中声明的变量默认都是final的,抽象类可以包含非final变量
  • java接口中的成员函数默认都是public的,抽象类中的成员函数可以是private,protected或者是public的
  • 接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是如果它包含main方法的话是可以被调用的
  • 抽象类中可以有普通方法,接口中不能。
  • 抽象类可以有构造,接口不能
  • 抽象类中可以有普通字段,而接口中不行
  • 抽象类不能实现多继承,接口可以
  • 符合isa关系的选用抽象类,符合hasa关系的选用接口比抽象类抽象程度更高
posted @   BingBing爱化学-04044  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示