C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: クラスが継承できる理由


(過去ログ 141 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■82553 / inTopicNo.1)  クラスが継承できる理由
  
□投稿者/ Tomo (1回)-(2017/01/14(Sat) 21:58:04)

分類:[C#] 

クラスは参照型なので
継承やオーバーライド及びポリモフィズムが行えますが

構造体は値型なので
継承やオーバーライド及びポリモフィズムが行えない

継承させたいのであれば、クラスを使うし
継承を行わない、かつ扱うフィールドの数が少なければ構造体を使う

という風に書籍に書いてあったのですが、クラスでなければ継承、オーバーライド及びポリモフィズムが
行えない理由というのが、いまいち理解できませんでした。

そういう仕様になっている、といえばそれまでですが
それだと、どうにも もやもやがはれません。

クラスでなければ(継承、オーバーライド、ポリモフィズム)が
できない理由を詳しく知りたいです。
引用返信 編集キー/
■82560 / inTopicNo.2)  Re[1]: クラスが継承できる理由
□投稿者/ Jitta (263回)-(2017/01/15(Sun) 09:17:59)
No82553 (Tomo さん) に返信

> クラスでなければ継承、オーバーライド及びポリモフィズムが
> 行えない理由というのが、いまいち理解できませんでした。
>
> そういう仕様になっている、といえばそれまでですが
> それだと、どうにも もやもやがはれません。
>
> クラスでなければ(継承、オーバーライド、ポリモフィズム)が
> できない理由を詳しく知りたいです。

C#の仕様書(Visual Studio をインストールしたディレクトリの VC#\Specifications\言語ID\CSharp Language Specification.docx)の「11.3.2 継承」に、次のように書かれています。
> 構造体型は抽象にはならず、常に暗黙的にシールされています。

常に sealed というのが仕様なので、継承できません。
常に sealed の理由、言語仕様の理由までは、公開されている範囲では不明、でしょうね。
引用返信 編集キー/
■82571 / inTopicNo.3)  Re[2]: クラスが継承できる理由
□投稿者/ Tomo (2回)-(2017/01/16(Mon) 10:35:52)
No82560 (Jitta さん) に返信
> ■No82553 (Tomo さん) に返信
>
>>クラスでなければ継承、オーバーライド及びポリモフィズムが
>>行えない理由というのが、いまいち理解できませんでした。
>>
>>そういう仕様になっている、といえばそれまでですが
>>それだと、どうにも もやもやがはれません。
>>
>>クラスでなければ(継承、オーバーライド、ポリモフィズム)が
>>できない理由を詳しく知りたいです。
>
> C#の仕様書(Visual Studio をインストールしたディレクトリの VC#\Specifications\言語ID\CSharp Language Specification.docx)の「11.3.2 継承」に、次のように書かれています。
>>構造体型は抽象にはならず、常に暗黙的にシールされています。
>
> 常に sealed というのが仕様なので、継承できません。
> 常に sealed の理由、言語仕様の理由までは、公開されている範囲では不明、でしょうね。

なるほど、分かりました。構造体も暗黙的にシールされていたのですね
納得できました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -