概念:
在一个类中,如果该类中存在一个功能,仅仅方法声明,没有方法体(抽象方法),需要将该类定义抽象类.
特点:
(1)如果一个类中有抽象方法,那么该类一定是抽象类;如果一个类是抽象类,该类中不一定存在抽象方法.
(2)抽象类不能实例化(创建对象)
(3)抽象类通过子类进行实例化,父类引用指向子类对象(父类是抽象类)抽象类多态.抽象的父类是通过子类进行实例化,如果子类也是一个抽象类,子类也不能实例化,一定存在一个具体的子类.
(4)抽象方法的格式:(没有方法体)
权限修饰符 abstract 返回值类型 方法名(参数);
可以修饰类和方法,不能修饰变量.
抽象类必须强制子类完成的事情
抽象类的成员特点:
(1)成员变量:可以是一个常量,也可以是一个变量.
(2)成员方法:可以定义抽象方法,也可以定义非抽象方法.
(3)构造方法:存在构造方法,既可以是有参构造也可以是无参构造(构造器)作用:对数据进行初始化
抽象类中成员方法特点:
成员方法如果是抽象方法,必须强制类完成的事情
成员方法如果是非抽象方法,子类继承父类—来提高代码复用性.
如果一个类中没有抽象方法,那么这个类可不可以定义为抽象方法?有什么意义?
(1)可以定义.
(2)不能直接创建对象.该抽象类的一些功能的返回值可能是类本身.
例如:日历类:Calendar他是抽象类,功能getInstance()非抽象方法,返回值是该类本身
abstract关键字不能和那些关键字公用(定义成员方法的时候)?
能够和public/protected修饰符使用.
final:final修饰成员方法,不能重写,冲突了…
private:私有的方法本身不能被继承,冲突…
static:修饰的成员方法跟类相关,随着类的加载而加载,抽象方法没有方法体,加载进内存没有意义.