Java中抽象类、接口、实现类的区别
接口、抽象类、实现类的区别
接口
- 接口中的所有属性都必须是常量(即被
public static final
修饰)。 - 接口中的所有方法都必须是抽象方法(在Java 8及以后,接口中可以包含默认方法和静态方法,但这些方法也必须有具体实现或逻辑,只是不强制要求实现类实现它们)。
- 接口不能被实例化。
- 接口支持多继承,即一个接口可以继承多个其他接口。
- 接口主要用于定义对象的行为,而不涉及行为的具体实现。
抽象类
- 抽象类中可以存在抽象方法,也可以存在具体实现的方法。
- 抽象类中的抽象方法必须由子类实现(除非子类也是抽象类)。
- 抽象类可以有实例变量和实例方法的实现。
- 抽象类只能被其他类继承,且继承抽象类的子类必须实现其所有抽象方法,或者子类也必须是抽象类。
- 抽象类支持单继承,即一个类只能继承一个抽象类。
- 抽象类主要用于定义一种模板或框架,供子类继承和扩展。
实现类
- 实现类可以被实例化。
- 实现类必须实现接口中的所有方法,或者继承抽象类并提供所有抽象方法的实现。
- 实现类可以添加自己的属性和方法,以扩展其功能。
- 实现类遵循接口或抽象类定义的规范或框架,但也可以添加额外的功能或行为。
接口和抽象类的区别
- 接口中所有的方法隐含都是抽象的,而抽象类则可以同时包含抽象和非抽象的方法
- 类可以实现很多个接口,但是只能继承一个抽象类
- 类可以不实现抽象类和接口声明的所有方法,在这种情况下,类也必须得声明成是抽象的
- 抽象类可以在不提供接口方法实现的情况下实现接口
- java接口中声明的变量默认都是final的,抽象类可以包含非final变量
- java接口中的成员函数默认都是public的,抽象类中的成员函数可以是private,protected或者是public的
- 接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是如果它包含main方法的话是可以被调用的
- 抽象类中可以有普通方法,接口中不能。
- 抽象类可以有构造,接口不能
- 抽象类中可以有普通字段,而接口中不行
- 抽象类不能实现多继承,接口可以
- 符合isa关系的选用抽象类,符合hasa关系的选用接口比抽象类抽象程度更高
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix