java抽象类和抽象方法
抽象类
语法:
[public]? abstract class 类名 [extends 父类名]? [implements 接口名1, 接口名2, ...]? {
[private | protected | public]? [static]? [final]? 类型名 变量名[ = 表达式1 [, 变量名[ = 表达式2 ... ]?]?]? ;
[private | protected | public]? 类名 (类型名 参数名1 [, 类型名 参数名n]*) { 方法体 }
[private | protected | public]? [static]? [final]? 类型名 方法名(类型名 参数名1 [, 类型名 参数名n]*) { 方法体 }
abstract [protected | public]? 类型名 方法名(类型名 参数名1 [, 类型名 参数名n]*);
}
主要是在类的声明上加上 abstract ,则类就是抽象类。
在抽象类中 或 接口中 的方法上加上 abstract,则该方法就是抽象方法。
抽象类进行实例化会直接报错,它只能作为父类。抽象类中可以没有抽象方法,也可以有多个抽象方法。
抽象类中可以有实例方法、静态方法、构造方法、成员属性。其实就是基于普通类,类体中多支持了增加抽象方法。
当一个类中: 1. 类体中明确声明有abstract方法时 2. 继承了另一个抽象类且没有实现父类中的全部抽象方法 3. 类实现了接口但没有实现其中的全部抽象方法
出现以上任何一种情况时,都必须将该类声明为抽象类。
抽象类也是一种类型,可以用来定义变量,但变量的值只能是其子类对象(因为抽象类不能有实例)。
抽象类的设计初衷是用于实现回调函数的功能(在实例方法中调用抽象方法,抽象方法由子类(用户)来实现,所以就相当于传了一个用户自定义的函数过来)。
抽象方法只能存在于抽象类中 或 接口中,且不写方法体,而是使用一个分号代替。
静态方法、构造方法、private方法、final方法 不能声明为抽象方法。
实例方法可以调用抽象方法(虽然这个方法还没实现)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?