#static について
直訳では、「静的の」意味。
C#
、Java
で共通の性質
→static
メソッドは、メソッドが属しているクラスのインスタンスを生成しなくても使用できる。
#Javaのstaticクラス
Java
のstatic
クラスは、static
メソッドから呼び出すために設定するクラス。
(これに限ってstatic
クラスを使うわけではないと思いますが、ここではこの様に説明しておきます)
static
メソッドの中では、static
クラスをnew
で生成することができる。
例としては、下記のようなコードになります。
(packageの記述は省略してあります)
public class ClassP{
// staticなメソッド
private static int methodB() {
ClassA a = new ClassA();
a.i += 1;
return a.i;
}
// methodB() で生成するためのstaticなクラス
private static class ClassA{
public int i = 5;
}
}
#C#のstaticクラス
C#
でのstatic
クラスは、インスタンス化ができない。つまり、new
で生成することができません。
下記は、Microsoftのドキュメントでの説明です。
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/static-classes-and-static-class-members
つまり、static
メソッドでクラスをインスタンス化する場合は、クラスはstatic
でない必要があります。
上記にあるsample.java
をC#で下記の様になります。
public class ClassP{
// staticなメソッド
private static int methodB() {
ClassA a = new ClassA();
a.i += 1;
return a.i;
}
// methodB() で生成するためのクラス
// Javaの場合は、ClassA は static である必要がある
private class ClassA{
public int i = 5;
}
}
#終わりに
C#
とJava
のコードは、package
の記述の有無や、use
かimport
かの違いで見分けがつきますが、static
クラスはどちらにも有り、そのうえで性質が違うので、気を付けたいところですね。