マンガで分かる Java入門講座

第7章 クラスとオブジェクト1
7-8. staticフィールドとstaticメソッド

クラス固有のフィールドやメソッドについて紹介します。

● staticなフィールドとメソッド

 Javaでは、クラスはオブジェクトの雛形として利用するだけでなく、直接フィールドやメソッドを持つことができます。そういったフィールドやメソッドには「static」という修飾子を付けます。

 このstaticなフィールドやメソッドは、オブジェクトの初期化を行わずに、「クラス名.フィールド名」「クラス名.メソッド名()」とすることで利用が可能です。

 注意すべき点は、staticなメソッドからは、非staticなフィールドやメソッドが利用できないことです。

 なぜならば、非staticなフィールドは、オブジェクトが作成されるまでは、インスタンス化されていないからです。存在しない物にアクセスすることはできません。だから、最初からアクセス自体が禁止されています。

図)非staticなフィールドにはアクセスできない
┏クラス━━━━━┓
┃        ┃
┃private static ┃public static
┠─●フィールド ┠─○フィールド
┠─●メソッド  ┠─○メソッド──────────┐
┃        ┃                ×禁止!
┃────────┃                │
┃        ┃           ┏メモリ━↓━━━━┓
┃private     ┃public     確保 ┃┏インスタンス━┓┃
┠─●フィールド→┠─○フィールド→→→→→┃・変数    ┃┃
┠─●メソッド  ┠─○メソッド     ┃┗━━━━━━━┛┃
┗━━━━━━━━┛           ┗━━━━━━━━━┛

図)非staticなメソッドにもアクセスできない
┏クラス━━━━━┓
┃        ┃
┃private static ┃public static
┠─●フィールド ┠─○フィールド
┠─●メソッド  ┠─○メソッド─────────────────┐
┃        ┃                       │
┃────────┃                       │
┃        ┃           ┏メモリ━━━━━━┓ │
┃private     ┃public     確保 ┃┏インスタンス━┓┃ │
┠─●フィールド→┠─○フィールド→→→→→┃・変数    ┃┃ │
┠─●メソッド  ┠─○メソッド─────→┗━━━━━━━┛┃ │
┗━━━━━━━━┛   ↑    利用 ┗━━━━━━━━━┛ │
          禁止!×                   │
             └───────────────────┘

● staticなフィールドとメソッドの実例

 前回利用したMyClassにstaticなフィールドとメソッドを追加してみます。

ソースコード)staticなフィールドとメソッド src/sample/MyClass.java
package sample;

public class MyClass {
    (省略)

    // staticなフィールド
    public static String classNameJa = "マイ クラス";

    // staticなメソッド
    public static String getClassNameJa() {
        return "メソッド:" + classNameJa;
    }
}

ソースコード)staticなフィールドとメソッドの利用 src/sample/Sample.java
package sample;

public class Sample {
    public static void main(String[] args) {
        System.out.println(MyClass.classNameJa);
        System.out.println(MyClass.getClassNameJa());
    }
}

出力)staticなフィールドとメソッドの利用
マイ クラス
メソッド:マイ クラス

この講座のマンガ部分は「箱人形マンガ(Box Comic) 」で作成しています。
作成:2013/05/30  更新:2015/08/09  [Permalink]