1、抽象方法与空方法体的方法不同之处:
public abstract void tets();
是抽象方法,但下面的就是空方法体的方法
public void test(){}
2、抽象类和抽象方法规则:
- 抽象类和抽象方法必须使用abstract修饰符修饰
- 有抽象方法的类必须被定义为抽象类,但抽象类可以没有抽象方法(没有抽象方法的抽象类,作用:不想被实例化,或者是让它的子类各取所需,只覆盖要用的方法即可,如HttpServlet)
- 抽象类不能被实例化
- 抽象类可以包含成员变量、方法(普通和抽象方法都行)、构造器、初始化块、内部类(接口、枚举等)。抽象类的构造器不能用于创建实例,主要用来被其子类调用
- final(表示不能被继承或重写)与abstract(表示需要继承或重写)不能同时使用
- abstract不能修饰成员变量、局部变量、构造器
- static(表示方法属于类)与absrtact不能同时修饰某个方法(通过该类调用了一个没有方法体的方法会报错
- private(子类不可见)与abstract不能同时修饰方法
3、抽象类的作用
抽象类体现的是一种模板模式,从多个具体类中抽象出来的父类,以这个抽象类作为子类的模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会大致保留抽象类的行为方式。