- - PR -
C#、インスタンス生成時のオーバーライド方法
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-07-29 11:39
インスタンスを生成するタイミングでメソッドをオーバーライドする方法がわかりません。
どなたかご教授いただけませんでしょうか。 以下のソースはJAVAのものですが、3行目でSonクラスのインスタンスを作成すると同時に、SonクラスのDo()メソッドをオーバーライドしています。 これと同じ操作をC#でそもそも可能なのか?可能ならばどのように行えばよいのか、調査してもわかりませんでした。 よろしくお願いいたします。 01: class Per{ 02: public static void main(String Arg[]){ 03: Son Son_ins= new Son(){ 04: public void Do(){ 05: System.out.println("こんにちわ 世界"); 06: } 07: }; 08: Son_ins.Do(); 09: } 10: } 11: 12: class Son{ 13: public void Do(){ 14: System.out.println("Hello World"); 15: } 16: } | ||||||||
|
投稿日時: 2002-08-02 18:59
レスが付きませんね。 次のコードでは、駄目なんでしょうか?
「インスタンスを生成するタイミングでメソッドをオーバーライドする」という意味と、必要性を、少し違う形で表現して頂けないでしょうか? そうすれば、もっと違う形でお役に立てると思うんですが…。 | ||||||||
|
投稿日時: 2002-08-03 00:01
匿名クラスの機能がC#にあるか?というご質問でしたら、ありません、というのが回答になります。
Javaでの匿名クラスの主な使い道であるイベントリスナーの実装ということでしたら、C#ではdelegateを使います。 私も匿名クラスをイベント以外の場面で使う理由について興味があります。どんなふうに使われるのでしょう? #とりあえずGenericsはナシってことで だってC#にはまだないから。。。 | ||||||||
|
投稿日時: 2002-08-03 09:04
NothingBut.NETFXさん、質問なんですが、C#に「テンプレート」「Generics」は必要なんでしょうか? (ここの主題とは少し離れますが、済みません。) 確かに「C++」「Java」では、データ全てが「Object」では無いので分かるんです。 でも「C#」では、データは全て「Object」ですよね。 それに、演算子のオーバーロードが可能な訳ですから、総称性のサポートはある程度出来ていると私は思っているですが…。 「C#にはまだないから。。。」と言う事は、「C#」もGenericsを採用するという話があるんでしょうか? (「.NET Framework」読ませて貰ってます。 ) | ||||||||
|
投稿日時: 2002-08-04 13:20
私ごときが説明するよりも、おそらくMSRのプロジェクトのペーパーをご一読されるほうが早いと思います。プロジェクトの最新状況が2002年7月23日からのワークショップでも発表されています。 | ||||||||
|
投稿日時: 2002-08-04 14:55
NothingBut.NETFXさん、「Generics for C#」を使わない場合の問題点が、良く分かり、大変勉強になりました。
情報、有難う御座いました。 (みなさん、主題から外れて、申し訳ありませんでした!) | ||||||||
|
投稿日時: 2002-08-05 12:32
object様>
やはりC#では、ソース内でネストクラスとして継承を行いなおし、そのタイミングでメソッドのオーバーライドを行わざるをえないという事ですね。 インスタンスを作成するタイミングでメソッドのオーバーライドをする利点というのは、新たにクラスを定義しなおす手間が省けるという点です。 Javaではネストクラスであろうがなんであろうが、新たなクラスの定義によってクラスファイルが生成されてしまうのでobject様に提供していただいた方法はナンセンスです。 しかし、C#ではインスタンスの作成のタイミングでオーバーライドできないようなのでObject様の方法を採るのがベストの様です。 Object様、NothingBut.NETFX様mありがとうございました。 |
1