【Java】staticメソッドとは?staticメソッドについて解説!
前回、main()メソッドを紹介しましたが
「public static void main(String[] args ) {}」で「staticとは何だろう?」と思ったことはありませんか?
staticとは静的メソッドと言われています。
「静的メソッド?普通のメソッドと何が違うの?」と言葉だけではよく分からないと思いますので、
今回はstaticメソッドについて解説していきます。
staticメソッドとは?
staticメソッドは、クラスのオブジェクトを作成せずに呼び出すことができるJavaのメソッドになります。
クラス名自体またはそのクラスのオブジェクトへの参照によって参照されます。
定義の仕方
1 2 3 4 |
public static void methodName(String name) { // 処理内容 } |
ですので、紹介したmain()メソッドはstaticメソッドになります。
なぜmain()メソッドがstaticメソッドになるのかというと、
インスタンス化が行われる前に、アプリケーションを実行するには
mainメソッドにアクセスできる必要があるからです。
ここで、mian()メソッド以外で使用しているstaticメソッドの例がありますので見てみましょう。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import java.io.*; class human{ public static String Name = ""; public static void result(String name){ Name = name; } } class output { public static void main (String[] args) { human.result("ボブ"); System.out.println(human.Name); human object = new human(); object.result("鈴木"); System.out.println(object.Name); } } |
出力結果
ボブ
鈴木
ボブと出力された方は、humanクラスから直接result()メソッドを呼び出しています。
しかし、鈴木と出力された方は、一度humanクラスをインスタンス化して
result()メソッドを呼び出しています。
コードを書いて実行してみる
staticメソッドを使って実行してみます。
今回はMemberというクラスを作成し、その中にあるchange()メソッドが
staticメソッドとなっています。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
import java.io.*; public class Main { public static void main(String[] args)throws Exception { Member s0 = new Member(11231,"一郎"); s0.result(); Member.change(); Member s1 = new Member(11231,"次郎"); Member s2 = new Member(23443,"太郎"); Member s3 = new Member(34344,"隆"); s1.result(); s2.result(); s3.result(); } } class Member { int no; String name; static String graduation = "高校"; static void change(){ graduation = "大学"; } Member(int r, String n){ no = r; name = n; } void result() { System.out.println(no + " " + name + " " + graduation); } } |
出力結果
11231 一郎 高校
11231 次郎 大学
23443 太郎 大学
34344 隆 大学
Memberクラスのchange()メソッドはstaticメソッドであるのでクラスから直接
呼び出すことができています。
また、インスタンス化した場合のデータは、graduationが「高校」になりますが、
変数graduationはstatic変数であり、change()メソッドで使用することが可能になるため、
change()メソッドが呼びだされるとgraduationは「大学」へ変更されます。
まとめ
・staticメソッドは、クラスのオブジェクトではなくクラスに属している。
・クラスのインスタンスを作成する必要なく呼び出すことができる。
・static変数にアクセスし、その値を変更できる。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。