不一定。抽象类不强制要求必须有抽象方法,这取决于你使用的编程语言。
下面以 Java 为例说明(因为“抽象类 / 抽象方法”这个说法最常见于 Java):
抽象类可以没有抽象方法。
abstract class Animal {
abstract void eat();
}
这是最常见的用法,子类必须实现 eat() 方法。
abstract class Animal {
void eat() {
System.out.println("Eating...");
}
}
这是完全合法的。
即使没有抽象方法,把类声明为 abstract 也有明确意义:
不允许被实例化
Animal a = new Animal(); // 编译错误
表达设计意图
为将来扩展预留抽象方法
abstract class Task {
public void execute() {
start();
doWork();
end();
}
abstract void doWork();
void start() {}
void end() {}
}
abstract class BaseDao {
protected void log(String msg) {
System.out.println(msg);
}
}
| 情况 | 是否合法 |
|---|---|
| 抽象类 + 抽象方法 | ✅ |
| 抽象类 + 无抽象方法 | ✅ |
| 普通类 + 抽象方法 | ❌(编译错误) |
abc.ABC + @abstractmethod抽象类不一定要有抽象方法,但抽象方法一定在抽象类(或接口)中。
如果你愿意,我也可以讲一个为什么“没有抽象方法的抽象类仍然有用”的真实项目例子。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。