抽象类和接口区别
抽象类在类前面须用 abstract 关键字修饰,一般至少包含一个抽象方法,抽象方法指只有
声明,用关键字 abstract 修饰,没有具体的实现的方法。因抽象类中含有无具体实现的方
法,固不能用抽象类创建对象。当然如果只是用 abstract 修饰类而无具体实现,也是抽象
类。抽象类也可以有成员变量和普通的成员方法。抽象方法必须为 public 或 protected(若
为 private,不能被子类继承,子类无法实现该方法)。若一个类继承一个抽象类,则必须
实现父类中所有的抽象方法,若子类没有实现父类的抽象方法,则也应该定义为抽象类。
接口用关键字 interface 修饰,接口也可以含有变量和方法,接口中的变量会被隐式指定为
public static final 变量。方法会被隐式的指定为 public abstract,接口中的所有方法均不
能有具体的实现,即接口中的方法都必须为抽象方法。若一个非抽象类实现某个接口,必须
实现该接口中所有的方法。
区别:
1)抽象类可以提供成员方法实现的细节,而接口只能存在抽象方法;
2)抽象类的成员变量可以是各种类型,而接口中成员变量只能是 public static final 类型;
3)接口中不能含有静态方法及静态代码块,而抽象类可以有静态方法和静态代码块;
4)一个类只能继承一个抽象类,用 extends 来继承,却可以实现多个接口,用 implements
来实现接口。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报