我经常发现自己创建使用这种形式的类(A):
abstract class Animal {
public void Walk() {
// TODO: do something before walking
// custom logic implemented by each subclass
WalkInternal();
// TODO: do something after walking
}
protected abstract void WalkInternal();
}
class Dog : Animal {
protected override void WalkInternal() {
// TODO: walk with 4 legs
}
}
class Bird : Animal {
protected override void WalkInternal() {
// TODO: walk with 2 legs
}
}
Run Code Online (Sandbox Code Playgroud)
而不是这种形式(B):
abstract class Animal {
public abstract void Walk(); …Run Code Online (Sandbox Code Playgroud)