ページ 1 / 1
インターフェース、抽象クラスのC#との違い
Posted: 2017年3月11日(土) 09:01
by java大好き
javaからC#への変換をするプログラムを作っています。
インターフェース、継承、抽象クラスに関してルールとしてC#とjavaで違いはありますか?
javaの継承、抽象クラス関連だけでページ数が100ページ以上あり共通点を見つけるが大変です。
例えばc#はjavaと違ってインターフェースを実装しても全部メソッドを実装しなくてもいいとか(仮の話でたぶん間違ってると思いますが)そういうルールの違いってあるんですか?
Re: インターフェース、抽象クラスのC#との違い
Posted: 2017年3月11日(土) 10:18
by Math
Re: インターフェース、抽象クラスのC#との違い
Posted: 2017年3月11日(土) 12:07
by YuO
java大好き さんが書きました:インターフェース、継承、抽象クラスに関してルールとしてC#とjavaで違いはありますか?
記述方法の違いを除いた場合において,
- Javaのinterfaceはpublic static finalなフィールドを持てるがC#はフィールドを一切持てない
- Javaのinterfaceはメソッドのデフォルト実装を持てるがC#は持てない
- Javaの@Overrideは任意だがC#のoverrideは必須
- C#のメソッドに付けるnewに相当するものはJavaには存在しない
- C#の明示的なインターフェースメソッドの実装に相当するものはJavaには存在しない
あたりが大きな違いかな,と思います。
変換プログラムを書くのであれば,仕様書をちゃんと読んだ方がよいとは思いますし,
JavaのStreamが直接的にC#のLINQに変換できるわけでもないので,簡単に変換できるものでもないですが……。
Re: インターフェース、抽象クラスのC#との違い
Posted: 2017年3月11日(土) 12:18
by java大好き
c#のメソッドにnewをつけるって
これデリゲートのことですか?
Re: インターフェース、抽象クラスのC#との違い
Posted: 2017年3月11日(土) 12:27
by YuO
デリゲートは根本的な言語仕様の問題ですし,今回の話題から外れるので元々除外しています。
JavaからC#への変換で問題になりそうな匿名クラスも,根本的な言語仕様の問題で今回の話題からも外れるので除外しています。
で,今回のnewは,
new 修飾子 (MSDN)
これのことです。