1. abstract类
我们把用关键字abstract修饰的类称作abstract类,即抽象类,例如:
abstract class A { … }
2. abstract方法
我们把用关键字abstract修饰的方法称作abstract方法,即抽象方法,例如:
abstract int max(int x,int y);
注意:
1)对于abstract方法,只允许声明,不允许实现,即没有方法体,而且不允许使用final和abstract同时修饰一个方法或类,也不允许使用static修饰abstract方法,即abstract方法必须是实例方法。
2)abstract类中可以有abstract方法,也可以有非abstract方法,而非abstract类中不可以有abstract方法。
例如:A类中的max()方法是abstract方法,min()方法是普通方法(非abstract方法)。
abstract class A { abstract int max(int x,int y); int min(int x,int y) { return x<y?x:y; } }
对于abstract类,不能使用new运算符创建该类的对象,如果一个非abstract类是某个abstract类的子类,那么它必须重写父类的抽象方法,并给出方法体,这也就是不允许使用final和abstract同时修饰一个方法或类的原因。
我们可以使用abstract类声明对象,尽管不能使用new运算符创建该对象,但是该对象可以成为其子类对象的上转型对象,这样该对象就可以调用子类重写的方法。
注意:abstract类可以没有abstract方法,如果一个abstract类是abstract类的子类,那么它既可以重写父类的abstract方法,也可以继承父类的abstract方法。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程