[解決済み] 抽象クラスはいつ使うか?
2023-07-22 14:51:30
質問
以下は、MSDN の記事です。 抽象クラス の記事ですが、本当に理解できません...。
抽象クラスはどのような場合に使うのでしょうか?抽象クラスを使用する利点は何ですか?
どのように解決するのですか?
抽象クラスは、継承やポリモーフィズムのためにクラスが必要だが、クラス自体をインスタンス化する意味がなく、そのサブクラスのみをインスタンス化する場合に有用です。これらは、いくつかの共通の実装コードを共有するサブクラスのグループのテンプレートを定義したいが、スーパークラスのオブジェクトが作成できないことも保証したい場合によく使用されます。
例えば、Dog、Cat、Hamster、Fishのオブジェクトを作成する必要があるとします。色、大きさ、足の数、行動など似たような性質を持っているので、Animalのスーパークラスを作成します。しかし、Animalは何色なのか?Animalオブジェクトの足は何本でしょうか?この場合、Animal型のオブジェクトをインスタンス化することはあまり意味がなく、そのサブクラスのみをインスタンス化することになります。
抽象クラスにはポリモーフィズムという利点もあり、(抽象)スーパークラスの型をメソッドの引数や戻り値の型として使用することができます。例えば、PetOwnerクラスにtrain()メソッドがあった場合、Animalのサブタイプごとにメソッドを作成するのではなく、train(Animal a)のようにAnimalタイプのオブジェクトを取り込むように定義することが可能です。
関連
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] ディープクローンオブジェクト
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] いつ使うか。Java 8+のインターフェイスのデフォルトメソッドと、抽象的なメソッドの比較
-
[解決済み】大文字・小文字を区別しない「Contains(string)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。