時々、私は次のようにいくつかのクラスデザインに出くわしました。具体的な親を拡張して抽象的な子供を持つ目的
abstract class animal {
public abstract void speak();
}
class dog extends animal {
@Override
public void speak() {
// Do something.
}
}
abstract class abstract_dog extends dog {
@Override
public abstract void speak();
}
私が思っていた、abstract_dog
クラスを持つことの目的は何ですか?私たちが非抽象的な発話方法を抽象的に「変換」する理由は何ですか?
注:クラス階層を制御する場合は、具体的な犬クラスを完全に削除するか、またはサブクラスabstract_dogを使用する方が良いでしょう。非リーフクラスの抽象クラスを作成することを推奨します。 –