DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォームが一つしか表示されないようにするについて

環境/言語:[何でも可]
分類:[.NET]

NotInheritable で基本クラスとして使用できないようにしているのに、なぜプロパティやメソッドが基本クラスから継承したメンバをオーバーライドするverridesを使用しているのかがわからない...
だれか、わかる人いますか?
こんにちは、じゃんぬ です。

■No12367に返信(somehowさんの記事)
> NotInheritable で基本クラスとして使用できないようにしているのに、

これは、NotInheritable キーワードがついたクラスからは継承できないという意味ですよね。

> なぜプロパティやメソッドが基本クラスから継承したメンバをオーバーライドする Overrides を使用しているのかがわからない...

なので、これは NotInheritable をつけたクラス内の話ならば、別におかしいことではないです。
NotInheritable をつけたクラス "の" 基本クラスのメソッドをオーバライドしてるだけですよね。

> だれか、わかる人いますか?

勝手に行間を補完していますので、質問内容を把握していないかもしれません。

> フォームが一つしか表示されないようにするについて

このタイトルと本質問内容の関連性がわからなかったです。
シングルトンとは、関係ないですよね?
返答ありがとうございます。

役に立ちました。確認させてください。
●NotInheritableがついたクラスは他から継承ができなく、使用とした場合はエ  ラーが出る。
●Overridesはオーバーライド可能でシグネチャが同じ基本型のメソッドをオーバ ーライドすることができる。よって、このケース(OnClosing使用)では使用可能である。

ってかんじで大丈夫ですか?不安が少しあります。
もし突っ込みたい箇所があればどんどん指摘しちゃってください。
自分のためになるので、お願いします。
■No12371に返信(somehowさんの記事)
> ・NotInheritableがついたクラスは他から継承ができなく、使用とした場合はエラーが出る。

他から継承ができないというと、微妙に誤解されそうな気がします。
「NotInheritable なクラス "からは" 継承ができない」の方が良いでしょう。
この場合、コンパイル エラーになります。

> ・Overrides はオーバーライド可能でシグネチャが同じ基本型のメソッドをオーバーライドすることができる。
> よって、このケース(OnClosing使用)では使用可能である。

このケースって... (^-^;)
具体的にどのクラス (型) を使っているのか、話が出ていない気がするのですが...?
とりあえず、System.Windows.Forms.Form と勝手に解釈します。

OnClosing メソッドは、Overidable なメソッドですので、Overrides できますよね。
Java と違って、NotOverridable は規定値であることに注意してください。
Java の場合、final でオーバーライドを防がなければなりませんが、
.NET の場合は、規定値がオーバーライド禁止であるということです。
(Java よりも優れてる点のひとつだと私は考えています)

> ってかんじで大丈夫ですか?不安が少しあります。
> もし突っ込みたい箇所があればどんどん指摘しちゃってください。
> 自分のためになるので、お願いします。

今回も勝手に補完しちゃってる部分があるので、私の指摘こそが間違ってるかもしれません。(^-^;)
>.NET の場合は、規定値がオーバーライド禁止であるということです。
>(Java よりも優れてる点のひとつだと私は考えています)

C#や、VB7はといったほうがいいでしょう。

・・・J#
# くっ、揚げ足取られた... orz

■No12375に返信(中博俊さんの記事)
> C#や、VB7はといったほうがいいでしょう。

.NET = (C#, VB.NET, J#, C++.NET...etc) ということで、確かに御幣がありました。

> ・・・J#

J# では final 付けまくりですね。
J# を改良すると C# が出来上がっちゃいますから、あれはあのままでしょう。
>>・・・J#
>
> J# では final 付けまくりですね。
> J# を改良すると C# が出来上がっちゃいますから、あれはあのままでしょう。
J#ってJava互換だったの…?(そういう問題じゃないって?…そうかも)
こんにちは、ガッさん。

■No12377に返信(ガッさんの記事)
> J#ってJava互換だったの…?(そういう問題じゃないって?…そうかも)

えっと、勝手な想像ですが「技術者レベル」の互換だと思います。
実際、Java 技術者なら J# はできるハズです。(できました)
.NET Framework は一応使えますから、そこから C# にはかなり移行しやすいハズです。

そんな手数踏まなくても、いきなり C# に移行できそうではありますが...
まあ、勝手な想像なので...
>>フォームが一つしか表示されないようにするについて
>
> このタイトルと本質問内容の関連性がわからなかったです。

これは私のサイトで紹介している

DOBON.NET .NET Tips - フォームが一つしか表示されないようにする
http://dobon.net/vb/dotnet/form/singleform.html

のことを言っているのだと思いますが、その説明が全くないため、私以外は誰も分からないかもしれませんね。(私自身も確信は持てませんが...。)

DOBON.NET | プログラミング道 | プログラミング掲示板