メソッドに対してのアクセス修飾子ではなく、クラスに対してつけるアクセス修飾子についてC#とJAVAを比較してみた。
アクセス修飾子 | C# | Java |
public | 制限なし。 | 制限なし。 |
internal | 同アセンブリ内から参照可能。 | 当該の修飾子なし(言語レベルでの同機能はない)。 |
無印 | internalをつけた場合と同様。 | 同じパッケージ内から参照可能。 |
protected | トップレベルでは修飾できない。アウタークラスもしくはアウタークラスの継承クラスから参照可能。 | |
internal protected | protectedと同様だが同アセンブリ内でのみ参照可能。 | 当該の修飾子なし。 |
private | トップレベルでは修飾できない。アウタークラスから参照可能。 |
インナークラスはC#の場合、Javaでいうstaticなインナークラスになる。
さらに紛らわしいのはc#ではstaticはモノステートパターンのようなインスタンスを持たないクラスを宣言するときの修飾子として使われる。
コメントを残す