異なるシンタックスと使用可能な場所では、どちらも非常に密接に関連しているようです。大きな違いは何ですか?抽象的な仮想的に同じ意味ですか?
2
A
答えて
7
抽象的な派生クラスは強制的に実装することを意味しますが、仮想の場合はそうではありません(必須ではありません)。これは、抽象メソッドには関連する本体がなく、仮想メソッドではないという事実に由来します。
0
メンバを抽象として定義すると、デフォルトの実装を提供せずに、ある種のプレースホルダを定義しています。基本クラスと対話するクライアントコードは、インスタンスの具象クラスが具体的な実装を提供していなければならないという知識の中で、抽象的なプレースホルダメンバを参照できます。
メンバーを仮想として定義すると、派生クラスで基本クラスの定義をオーバーライドする実装を提供できます。違いは、派生クラスが独自の実装を提供しない場合、基本クラスからの実装が使用されることです。
は、次のC#の例のクラスを考えてみましょう:
abstract class TaskBase {
public abstract void RunTask();
}
class RoadNetwork {
public string GetCorrectSideToDriveOn() { return "left"; }
}
TaskBase
クラスのデザインは、コードはそれなしでコンパイルされませんので、RunTask()
の独自の実装を提供する派生クラスを強制します。設計者は、「タスクは実行可能でなければなりませんが、意味のあるデフォルトがないため実装を提供する必要があります」と効果的に言っています。あなたが行くことができるよう)
関連する問題
- 1. C#で抽象メソッドと仮想メソッドを作成する目的
- 2. 抽象メソッドは仮想ですか?
- 3. 抽象的な新規/仮想/上書き/抽象キーワードの実際の例は何ですか?
- 4. Scalaの抽象的な特質の意味
- 5. 仮想メソッドを持つ静的抽象オブジェクト
- 6. C#仮想(または抽象)静的メソッド
- 7. 抽象的な非抽象的なジャンゴモデルを抽象的に動的に作成する方法は?
- 8. 仮想CPUの意味は?
- 9. 抽象的なユーザーログインビュー
- 10. 抽象的なユーザーコントロール
- 11. 抽象的なHttpFileCollectionBase
- 12. 抽象関数と仮想関数
- 13. 抽象メソッドまたは仮想メソッド?
- 14. エラー:抽象/仮想メンバ秘密
- 15. Moq、抽象クラスと仮想プロパティ
- 16. 仮想ボイドfoo(...)の "..."の意味は?= 0 ;?
- 17. 客観的な意味での意味は何ですか?
- 18. PDOがあるので、抽象的なデータベース処理には意味がありますか?
- 19. スカラ、抽象的な抽象型の型にアクセスする
- 20. Android Volley抽象的なonResponse
- 21. 春の抽象的な例
- 22. 抽象的なプライベート関数
- 23. 純粋な仮想関数のないC++抽象クラス?
- 24. 言葉の意味的な意味的距離
- 25. "抽象表現"の意味は何ですか? java.io.Fileの で
- 26. エラー:クラスが抽象的ではなく、抽象メソッド
- 27. 意図的に無意味なMIMEタイプ
- 28. 動的仮想属性ですか?
- 29. コンパイル時の抽象化の意味は何ですか?
- 30. 抽象クラス修正の仮想デストラクタが不明です
、彼らは特に間違った側に駆動するために選択しない限り
RoadNetwork
を実装して誰もが自動的にオン駆動するために、道路の正しい側を使用します。RoadNetwork
クラスのデザインは異なる動作を抽象メソッドが(特別な種類の)仮想メソッドであるとまでは限りません。 – GolezTrol