C# inheritance keywords ( and comparison with those of C++ )

継承関係の keyword まとめ。

  • abstract
    • 「抽象」という意味を付加する keyword 。
    • C++ でいう「純粋仮想」という概念にあたる。あたるけどそもそも「純粋仮想」の意味がアレだし code level でも "virtual" と末尾の "= 0" で表現されるから直感的じゃないんだよな C++ の場合。この点は C# わかりやすい。
    • class, method, property, indexer, event に付加可能。
  • virtual
    • 「仮想」という意味を付加する keyword 。
    • C++ でもこれは「仮想」という概念。
    • method, property, indexer, event に付加可能。
  • override
    • そのまま super class で定義された同名の何かを "override" するという意味を付加する keyword 。
    • C++ にはないというか C++ の場合 super class の member function に virtual が指定されていれば sub class の member function に何もつけなくても override 可能。 comment で super class からの member を定義してるとか補足を入れたりしなくていいのでわかりやすい。
    • method, property, indexer, event に付加可能。
  • new
    • super class で定義された同名の何かを「新しいもの」で隠蔽するという意味を付加する keyword 。
    • C++ だと super class の member function に "virtual" がついてないときに sub class で同名の member function を定義したときと同じ。たしかに sub class 定義時にも明示したほうがわかりやすいかも。
    • member すべてに指定可能。
  • sealed
    • 派生 class を作成されないように「封印」するという意味を付加する keyword 。
    • C++ だと virtual destructor なしと等価。わかりにくいよ C++ …。
    • class, instance method, property に付加可能。

C# はさすが後発だけあってわかりやすい言語仕様になってるというか C++ わかりにくすぎだろ JK という結論。