staticメソッド
メソッドにも「staticなメソッド」があります。
staticなフィールドと同じように、静的領域に作られるメソッドです。
// HasStaticMethodRunner.java
/**
* staticメソッドとstaticフィールドを持つクラス。
*/
class HasStaticMethod
{
// int型変数のstaticフィールドdataStaticを定義します。
static int dataStatic;
/**
* dataStaticフィールドを出力するstaticメソッドです。
*/
static void printData()
{
System.out.println( dataStatic );
}
}
/**
* 実行用クラス。このクラスを実行してください。
*/
class HasStaticMethodRunner
{
public static void main( String[] args )
{
// staticフィールドに数値を入れます。
HasStaticMethod.dataStatic = 100;
// staticメソッドで出力します。
HasStaticMethod.printData();
// 出力結果:
// 100
}
}
/**
* staticメソッドとstaticフィールドを持つクラス。
*/
class HasStaticMethod
{
// int型変数のstaticフィールドdataStaticを定義します。
static int dataStatic;
/**
* dataStaticフィールドを出力するstaticメソッドです。
*/
static void printData()
{
System.out.println( dataStatic );
}
}
/**
* 実行用クラス。このクラスを実行してください。
*/
class HasStaticMethodRunner
{
public static void main( String[] args )
{
// staticフィールドに数値を入れます。
HasStaticMethod.dataStatic = 100;
// staticメソッドで出力します。
HasStaticMethod.printData();
// 出力結果:
// 100
}
}
// HasStaticMethodRunner.java /** * staticメソッドとstaticフィールドを持つクラス。 */ class HasStaticMethod { // int型変数のstaticフィールドdataStaticを定義します。 static int dataStatic; /** * dataStaticフィールドを出力するstaticメソッドです。 */ static void printData() { System.out.println( dataStatic ); } } /** * 実行用クラス。このクラスを実行してください。 */ class HasStaticMethodRunner { public static void main( String[] args ) { // staticフィールドに数値を入れます。 HasStaticMethod.dataStatic = 100; // staticメソッドで出力します。 HasStaticMethod.printData(); // 出力結果: // 100 } }
HasStaticMethodクラスは、staticフィールド1つに加え、staticメソッドを1つ持っています。
/**
* staticメソッドとstaticフィールドを持つクラス。
*/
class HasStaticMethod
{
// int型変数のstaticフィールドdataStaticを定義します。
static int dataStatic;
/**
* dataStaticフィールドを出力するstaticメソッドです。
*/
static void printData()
{
System.out.println( dataStatic );
}
}
* staticメソッドとstaticフィールドを持つクラス。
*/
class HasStaticMethod
{
// int型変数のstaticフィールドdataStaticを定義します。
static int dataStatic;
/**
* dataStaticフィールドを出力するstaticメソッドです。
*/
static void printData()
{
System.out.println( dataStatic );
}
}
/** * staticメソッドとstaticフィールドを持つクラス。 */ class HasStaticMethod { // int型変数のstaticフィールドdataStaticを定義します。 static int dataStatic; /** * dataStaticフィールドを出力するstaticメソッドです。 */ static void printData() { System.out.println( dataStatic ); } }
メソッドの前にstaticを付けるとそのメソッドは「staticメソッド」になります。
staticメソッドは、staticフィールドと同じように静的領域に作られます。
作られるタイミングはstaticフィールドと一緒です。
// staticフィールドに数値を入れます。
HasStaticMethod.dataStatic = 100;
HasStaticMethod.dataStatic = 100;
// staticフィールドに数値を入れます。 HasStaticMethod.dataStatic = 100;
そのクラスを初めて使用したとき静的領域が作られ、その中にstaticフィールドとstaticメソッドが作られます。
staticメソッドの使い方は、staticフィールドと同じ「クラス名.メソッド名()」となります。
// staticメソッドで出力します。
HasStaticMethod.printData();
HasStaticMethod.printData();
// staticメソッドで出力します。 HasStaticMethod.printData();
staticメソッドはstaticフィールドを使うことができます。
System.out.println( dataStatic );
System.out.println( dataStatic );
dataStaticフィールドはstaticフィールドです。
このようにstaticメソッドからstaticフィールドを使用することができます。
この関係は、インスタンス内でのメソッドとフィールドの関係に似ています。
静的領域の中にstaticフィールドとstaticメソッドが一緒に入っているので、たとえばこの例でdataStaticフィールドがprivateなフィールドだとしても、printData()メソッドはdataStaticフィールドを使うことができます。