原文链接:https://www.cnblogs.com/Time25/p/19803757.html

1
2
3
4
5
6
7
8
9
10
11
12
13
class Person {
public void run() { … }
}

class Student extends Person {
@Override
public void run() { … }
}

class Teacher extends Person {
@Override
public void run() { … }
}

由于多态的存在,子类可以覆写父类的方法,但是如果父类的方法没有任何用处,目的是为了让子类可以覆写,不可以去掉执行语句,比如Person里的public void run(….){}不可以把{}去掉,也不可以把run去掉
public abstract void run();抽象类诞生了但是把一个方法声明为abstract,表示它是一个抽象方法,本身没有实现任何方法语句。因为这个抽象方法本身是无法执行的,所以,Person类也无法被实例化。编译器会告诉我们,无法编译Person类,因为它包含抽象方法。必须把Person类本身也声明为abstract,才能正确编译它:
1
2
3
4
abstract class Person {
public abstract void run();
}


如果一个类有抽象方法,那么这个类就一定要是抽象类,抽象类是无法实例化的
Person p = new Person(); // 编译错误

// TRAINING LOG · 第 37 / 76 篇训练记录 · 成文于 2026.03.31 · 夜间 21:23