今天学习了Java中的抽象类的概念:
声明一个抽象类:abstract class 类名 ;
抽象类中必须包含一个抽象方法,抽象方法只有声明部分,没有实现方法,即没有方法体部分,如abstract 方法名() ;
前面学习的都是普通类的知识,抽象类和普通类的差别如下:
1、抽象类比普通类的定义中多出一个抽象方法,普通类的所有定义(变量,常量,方法)在抽象类中都能使用;
2、在类的声明处需要用abstract声明为抽象类,抽象方法也必须用abstract来声明。
抽象类本身不能被直接实例化,即不能用new实例化对象,能否有构造方法呢?答案是可以的。
含有抽象方法的类必须被声明为抽象类,必须有子类,抽象类的子类(如果是普通类)必须复写所有的抽象方法,抽象类的子类若是抽象类,可以不复写所有的抽象方法。
前面刚学的final关键字标识的类不能有子类,而抽象类必须有子类,那么抽象类能否用final关键字声明呢?答案是否定的。