##勉強でつまづいていること
C#を独学で勉強しているのですが、つまずいている点が2つあります.
1.派生クラスは基底クラスを受け継いで機能を拡張できるとのことでしたが、その具体的なメリットを教えてください.
2.単独のクラスを推移的に継承できるとのことでしたが、派生クラスのメンバーが基底クラスのメンバーを隠蔽することがあるらしく、なぜ隠蔽するのかを疑問に思いました.
以上の2点です.よろしくお願いします.
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
1 書ききれないので、オブジェクトの多態性について調べてください。一例を言えば、デザイナーでコンポーネントを同じ手順で貼り付けることができますが、これはそれらのコンポーネントがすべて
Component クラスを継承しているからです。
2 new 演算子による基底メンバーの隠蔽のことだろうと思いますが、滅多に出番はありません。通常は隠蔽ではなくオーバーライドを使います。
オーバーライドできないメンバーを隠蔽によって無理やり上書きさせなければならない事態に出会ったら、設計が悪いのでやり直してください。基底クラスにキャストした時とそうでない時で挙動が変わり、発見しにくいバグになります。
隠蔽が必要な場面としては、例えば Equals がありますが、説明は書ききれないので省略します。
なぜ両者ともに書ききれないかと言うと、説明の前提として必要な知識が不足していると思われるからです。こんなところでチョコチョコっと聞いて理解したつもりになるのではなく、もっと基礎の部分を学習してください。
追記
Equals も通常オーバーライドするので例として不適切でした。複数のインターフェースを実装し、それらに同じシグネチャーのメソッドが含まれている際にメンバーの隠蔽が使われることがあります。例えばジェネリックインターフェースの場合に起こりえます。
投稿2017/03/13 22:49
編集2017/03/13 23:29総合スコア28660
0
ベストアンサー
かなり極端なのですが
1
家でたとえさせてもらいます
基底クラスとして「骨組み」を作ります
そして家1クラスを作ったときに基底クラスの骨組みを継承すると既に骨組みが完成された状態になります。
あとはこのクラスに肉付けをするだけで家が完成します。
新しく家2を作る場合でも骨組みを継承すれば作業は肉付けだけになります。
わざわざ毎回毎回骨組みを作るのは面倒なので最初から作っておいてそれを活用しようというのが継承のメリットです。
2
おそらくオーバーライドのことだと思います。
1の続きで骨組みを継承したけど少し形を変えたいと思った場合に新しく宣言できるということです。
ここで隠蔽しなかったら基底クラスの骨組みまで変わってしまいます。
ホントに極端なのでいろいろと抜けている部分があります。
いろいろ調べると出てくると思いますので調べてみてください。
投稿2017/03/14 05:56
総合スコア93
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
端的に。
1.派生クラスは基底クラスを受け継いで機能を拡張できるとのことでしたが、その具体的なメリットを教えてください.
新しいクラスを作るときに基底クラスと同様のロジックを記述しなくて良いです。
2.単独のクラスを推移的に継承できるとのことでしたが、派生クラスのメンバーが基底クラスのメンバーを隠蔽することがあるらしく、なぜ隠蔽するのかを疑問に思いました.
オーバーライドのことでしょうか。
特定のメンバーの処理だけ変えたい場合は基底クラスのメンバーを上書きできる(基底クラスのメンバーは隠蔽する)のは便利じゃないでしょうか。
投稿2017/03/14 00:06
総合スコア559
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
まずは、
”C#” 継承
で google 検索したり、
C# の入門書籍を読むとよいと思います。
その上で疑問があれば,その点のついて具体的に teratail などへ質問を投稿するとよいとおもいます。
投稿2017/03/13 21:35
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/14 08:32