不需要,抽象类不一定非要有抽象方法。
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("公交车");
}
}
}运行示例,输出如下:
大卡车 公交车