我们把用关键字abstract修饰的类称作abstract类,即抽象类,例如:
abstractclassA{…}
我们把用关键字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方法)。
abstractclassA{abstractintmax(intx,inty);intmin(intx,inty){returnx<y?x:y;}}
对于abstract类,不能使用new运算符创建该类的对象,如果一个非abstract类是某个abstract类的子类,那么它必须重写父类的抽象方法,并给出方法体,这也就是不允许使用final和abstract同时修饰一个方法或类的原因。
我们可以使用abstract类声明对象,尽管不能使用new运算符创建该对象,但是该对象可以成为其子类对象的上转型对象,这样该对象就可以调用子类重写的方法。
注意:abstract类可以没有abstract方法,如果一个abstract类是abstract类的子类,那么它既可以重写父类的abstract方法,也可以继承父类的abstract方法。