クラス固有のフィールドやメソッドについて紹介します。
Javaでは、クラスはオブジェクトの雛形として利用するだけでなく、直接フィールドやメソッドを持つことができます。そういったフィールドやメソッドには「static」という修飾子を付けます。
このstaticなフィールドやメソッドは、オブジェクトの初期化を行わずに、「クラス名.フィールド名」「クラス名.メソッド名()」とすることで利用が可能です。
注意すべき点は、staticなメソッドからは、非staticなフィールドやメソッドが利用できないことです。
なぜならば、非staticなフィールドは、オブジェクトが作成されるまでは、インスタンス化されていないからです。存在しない物にアクセスすることはできません。だから、最初からアクセス自体が禁止されています。
┏クラス━━━━━┓ ┃ ┃ ┃private static ┃public static ┠─●フィールド ┠─○フィールド ┠─●メソッド ┠─○メソッド──────────┐ ┃ ┃ ×禁止! ┃────────┃ │ ┃ ┃ ┏メモリ━↓━━━━┓ ┃private ┃public 確保 ┃┏インスタンス━┓┃ ┠─●フィールド→┠─○フィールド→→→→→┃・変数 ┃┃ ┠─●メソッド ┠─○メソッド ┃┗━━━━━━━┛┃ ┗━━━━━━━━┛ ┗━━━━━━━━━┛
┏クラス━━━━━┓ ┃ ┃ ┃private static ┃public static ┠─●フィールド ┠─○フィールド ┠─●メソッド ┠─○メソッド─────────────────┐ ┃ ┃ │ ┃────────┃ │ ┃ ┃ ┏メモリ━━━━━━┓ │ ┃private ┃public 確保 ┃┏インスタンス━┓┃ │ ┠─●フィールド→┠─○フィールド→→→→→┃・変数 ┃┃ │ ┠─●メソッド ┠─○メソッド─────→┗━━━━━━━┛┃ │ ┗━━━━━━━━┛ ↑ 利用 ┗━━━━━━━━━┛ │ 禁止!× │ └───────────────────┘
前回利用したMyClassにstaticなフィールドとメソッドを追加してみます。
package sample;
public class MyClass {
(省略)
// staticなフィールド
public static String classNameJa = "マイ クラス";
// staticなメソッド
public static String getClassNameJa() {
return "メソッド:" + classNameJa;
}
}
package sample;
public class Sample {
public static void main(String[] args) {
System.out.println(MyClass.classNameJa);
System.out.println(MyClass.getClassNameJa());
}
}
マイ クラス メソッド:マイ クラス