不需要,抽象类不一定非要有抽象方法。
Java 语言中,用 abstract 关键字来修饰一个类时,这个类叫作抽象类。抽象类是它的所有子类的公共属性的集合,是包含零个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。
(1)抽象类,可以不定义抽象方法
public abstract class MyAbstract { public void show(String message) { System.out.println(message); } } public class Demo extends MyAbstract { public static void main(String[] args) { Demo demo = new Demo(); demo.show("Hello World"); } }
运行示例,输出如下:
Hello World
(2)内部抽象类,可以不定义抽象方法
public class Demo { public static void main(String[] args) { Demo demo = new Demo(); BigTruck bigTruck = demo.new BigTruck(); bigTruck.name(); Bus bus = demo.new Bus(); bus.name(); } /** 汽车(一个抽象类,没有定义任何抽象方法) */ abstract class Car { public void name() {} } /** 大卡车 */ class BigTruck extends Car { @Override public void name() { System.out.println("大卡车"); } } /** 公交车 */ class Bus extends Car { @Override public void name() { System.out.println("公交车"); } } }
运行示例,输出如下:
大卡车 公交车