Javaエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnetJava
  2. Javaコラム
  3. Java TIPS
  4. Javaのstaticメソッドとは?|メソッドの呼び出し方も紹介!

Javaのstaticメソッドとは?|メソッドの呼び出し方も紹介!

  • Java TIPS
公開日時:
Javaのstaticメソッドとは?|メソッドの呼び出し方も紹介!
この記事でわかること
    システム
    エンジニア
    staticメソッドって何ですか?
    プロジェクト
    マネージャー
    staticメソッドはインスタンス化による影響を受けない処理をするメソッドのことを言います。

    staticメソッドとは?

    Javaではメソッドの定義をする際に、static修飾子をつけない非staticメソッドと、static修飾子をつけたstaticメソッドがあります。

    Javaにおいて通常メソッドは、クラスをインスタンス化してから使用します。しかし、static修飾子を付与したメソッドは、クラスのインスタンス化なしに直接呼び出して使用します。

    いくらインスタンスを生成しても、参照先の実体は1つだけ確保された状態ということです。実際のコードを掲載しているので、照らし合わせてみてください。

    定義方法

    Javaのstaticメソッドの定義方法は、通常のメソッドの戻り値のデータ型定義の前にstatic修飾子をつけます。

    呼び出し方

    Javaのstaticメソッドの呼び出し方は、クラス名.メソッド名()とします。前述のStaticSampleクラスを例にすると以下のようになります。

    Javaを初めて学ぶ際に覚えるmainメソッドの、public static void main(String[] args)もstatic修飾子を付与しています。ちなみにstatic修飾子は、メソッド以外にもメンバ変数や内部クラスやimportにも付与可能です。

    またstatic initializserなどもあります。今回はメソッドに対するstaticについて説明しますので、気になった方は調べてみてください。

    特徴

    ここまで、Javaのstaticメソッドの定義方法と呼び出し方を見てきました。次に、staticメソッドの特徴を説明します。は3つの特徴を取り上げているので、順に説明していきます。

    Javaをこれから勉強する人はもちろん、すでに学習したことがある人も復習として、ぜひこの記事を参考にしてください。

    参照先の実体は1つ

    Javaでは、クラスに定義した変数やメソッドはインスタンス化した際に、メモリ空間にその領域が確保されます。上記のコードサンプルの、StaticSampleクラスを少し修正して説明します。

    上記のsample_1のmethod_none()と、sample_2のmethod_none()は別のメモリ空間で処理されます。

    しかし、StaticSample.method_static()は同じメモリ空間で処理されるため、staticCallCountの値が保持されたまま処理されます。具体的な実行結果は、以下のようになります。

    static修飾子なしの出力は、2回目も「呼び出し回数:0」ですが、static修飾子ありの出力は、「呼び出し回数:0」と「呼び出し回数:1」という違いがあります。

    staticメソッド内での参照制限

    staticメソッド内で参照できるメンバ変数とメンバメソッドには、以下のような違いがあります。

    staticメソッド内からstatic変数やstaticメソッドは参照できるが、非static変数や非staticメソッドは参照できず、上記のソースでコメントアウトを解除するとJavaのコンパイル時にエラーとなります。

    オーバーライドできない

    staticメソッドはオーバーライドできません。StaticSampleクラスを親クラスに持つ、StaticSampleChildクラスを作成している前提でコードを見ていきましょう。

    このようにstaticメソッドをオーバーライドしようとしてもできません。これは、staticメソッドがクラス固有であることを保証するためです。このような場合には別のメソッド名にするか、そもそものクラス設計を見直す方が良いでしょう。

    システム
    エンジニア
    メソッドのクラスを使うことで、さまざまな呼び出し方ができるのですね。
    プロジェクト
    マネージャー
    実際に使ってみて、自由にstaticメソッドを使えるようになりましょう。

    Javaのstaticメソッドを使ってみよう

    この記事では、Javaのstaticメソッドの使い方を見てきました。非staticメソッドとの違いや使い方がわかったでしょうか。

    実際に自身の手を動かしてコーディングしてみてください。そしてstatic修飾子の利用シーンを増やして自由に使えるようにしていきましょう。

    FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    Java新着案件New Job