抽象方法是只有方法方法签名,没有方法的实现方式。有抽象方法的类只能被定义为抽象的类,抽象类中可以没有抽象方法。抽象类和抽象方法要满足一下规则,抽象类和抽象方法必须被abstract修饰符来定义,抽象方法不能有实体方法。抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象的实例,即使抽象类里不包含抽象方法,这个抽象类也不能创建实例。抽象类可以包含成员变量、构造器、方法、初始化块、内部类(接口、枚举)5种方法,抽象类的构造器不能用于创建实例,主要被子类调用。抽象类可以用有得有失来描述,得指的是抽象类多了一个能力,抽象类可以包含抽象的方法;失指的是抽象类失去了一个能力,抽象类不能用于创建一个实例。
abstract不能用于修饰成员变量,不能用于修饰一个局部变量,也不能用于修饰构器,abstract不能定义为private访问权限,即private不能和abstract同事修饰方法。
抽象类的作用时实现摸板模式的设计,抽象类作为多个子类的模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保证抽象类的行为。抽象父类可以定义某些需要使用的方法,把不能实现的部分抽象成抽象方法。