主页

java抽象类和抽象方法

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方法 不能声明为抽象方法。
实例方法可以调用抽象方法(虽然这个方法还没实现)。
 
posted @   平凡人就做平凡事  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示