美人すぎない化粧品販売員がアプリ開発を目指す

Javaの構文、オブジェクト指向、APIなど、プログラミング初心者の私がアプリ開発までに理解したことをまとめたブログ

static 〜 静的メソッド

staticはメソッドにもつけられる

staticがついているメソッド静的メソッドという

 

静的フィールド+静的メソッド→静的メンバ

 

 

★ 静的メソッドを定義すると、静的フィールドと同様に3つの効果が現れる

 

 

1. メソッド自体は金型のクラスの方につく

 

・・・「クラス名.メソッド名( );」で呼び出す

 

 

2.もちろんインスタンスからも呼び出すことが出来る

インスタンスの方にはクラスからその分身が準備される。

 

・・・その時は、インスタンス変数名.メソッド名( );」

 

 

3.金型のクラスの方についているので、インスタンスを生み出さなくても呼び出すことが出来る

 

 

 

〈静的メソッドの制約〉

 

 静的メソッドの中に記述するコードでは、

           staticがついていないフィールドやメソッドは記述できない

 

 ex. class Hero{

                    String name;

                    static int money; //静的フィールド

     static void setRondomMoney( ){ //静的メソッド

     Hero.money=(int)(Math.Rondom( )*1000);//int型に強制変換

     System.out.println("所持金は"+static int money+"円");

     //staticなフィールドを呼び出しているので、OK

                 

    System.out.println(this.name+"たちの所持金");

                //nameはstaticではないフィールドを記述しているので、エラー

     (thisは自分自身のインスタンス情報であることを表す)

    }

 

なぜ制約が出来たのか?

 

 staticのついた静的メソッドは、金型であるクラスの方についているので、

インスタンスが存在していない状況でも呼び出すことが出来るメソッド

 

・・・もし自分自身のインスタンスを表すthisの記述をしてしまうと、インスタンスが存在していない状況で呼び出された時に対応できなくなる

 

 通常のフィールドはインスタンス化された時点からしか存在しない。よって、インスタンス化される前では、記述があってもまだ仮想世界に存在してない

               ↕︎

  staticがついているフィールドはインスタンス化される前から存在している

 

 

 

対応できなくなるような事態を防ぐために、Java

「staticがついているものしかstaticの内部には記述しないという制約」を作った