質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

3回答

929閲覧

ポリモーフィズム・継承について

irm

総合スコア25

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/01/24 08:54

編集2019/01/24 08:56

基底クラスにあるvirtualメソッドの継承について質問です。
派生クラス内で中身が全く同じメソッドを使う場合、overrideとして派生クラスにも同じコードを記載する必要はありますか?(少しかじったことのあるJavaにおいては基底にあるものは基本継承されるということで、同じなら書かなくてもよかった気がします。それで今回のそのように考えました。)また、実際にVisual Studioでも基底クラスのvirtualメソッドは、派生クラスにおいても継承されており作動しました。
もし、どうしても全く同じ内容のメソッドであってもoverrideとして派生クラスでも書かなければならない理由などがあるとするのであれば、その理由は何なのでしょうか?私の理解では、基底クラスのメソッドを派生クラスでoverrideする時は、メソッド名は同じでも、実行内容の詳細を個々の派生クラスの内容に合わせて変えることができる、ということだと思っていたのですが…。私の理解は間違っているでしょうか。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

virtualな関数をoverrideするが、全く同じ内容をあえて書く、ってことですか?
必要ないですし、する理由も無いと思います。
mgmkさんの理解の通りで、virtualな関数は動作を上書きすることができる、というだけで必ず上書きしないといけないというわけではなく、元の(基底クラスの)動作でいいなら上書きする理由はありません。

投稿2019/01/24 09:04

toki_td

総合スコア2850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

irm

2019/01/24 09:10

そうですよね、確認できてよかったです。ありがとうございます。
guest

0

派生クラス内で中身が全く同じメソッドを使う場合、overrideとして派生クラスにも同じコードを記載する必要はありますか?

その必要はないです。

Windows Forms アプリを作ったことがありますか? Visual Studio のテンプレートで作ると、From コントロールを継承した Form1 がデフォルトで生成されると思いますが、基底クラスの Form に山ほど定義されているメソッドを Form1 でいちいち全部 override して定義し直したりはしないですよね。

イメージ説明

投稿2019/01/24 09:15

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

irm

2019/01/24 09:19 編集

今は、WPFを使っています。そうですよね、基底のメソッドが大量になったら、派生で個々に違う部分だけをカスタマイズできますよ、というのが利点なんだろうと思いますし…。
guest

0

ベストアンサー

実際にVisual Studioでも基底クラスのvirtualメソッドは、派生クラスにおいても継承されており作動しました。
?私の理解では、基底クラスのメソッドを派生クラスでoverrideする時は、メソッド名は同じでも、実行内容の詳細を個々の派生クラスの内容に合わせて変えることができる、ということだと思っていたのですが…。私の理解は間違っているでしょうか。

間違ってないです。実際動いていると書いていますよね。何が不安なんでしょうか?

投稿2019/01/24 08:57

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

irm

2019/01/24 09:08

派生に何も書かないことに対してつっこみがありまして何か間違っている点があるのかなと思ってしまいました…。papinianusさんがおっしゃるならよかったです。ありがとうございます。
papinianus

2019/01/24 10:37

そういう指摘をされたのだとしたら、そりゃ悩みますね。 実際のニュアンスわからないので批評は避けますが、例えば解釈として、基底と派生の組み方がおかしいという意図かもしれない(派生でオーバライドしてないよ、はオーバライドしなさいよではなく、ほとんどオーバライドしないような派生クラスは不要だよ、かもしれない) 話しやすさはあるかもですが、質問にあるくらいちゃんと考えてみた内容があるのですから、どういう意味ですかと聞いたほうが後々のこと考えても良いような… あと、私は信頼にたる回答者ではないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問