028-オブジェクト指向の基本-クラス変数とstaticメソッド【新人エンジニアが最初に覚えたい100のJava文法】
ユーチューブ動画
static変数とstaticメソッドについて解説します。
ソースコード
public class BasicClass { public static void main(String[] args) { Product product1 = new Product("pencil",100); Product product2 = new Product("eraser",60); System.out.println(Product.getProductCount()); } } class Product { private String productName; private int price; private static int count = 0; public Product(String productName, int price) { this.productName = productName; this.price = price; count++; } public static int getProductCount(){ return count; } }
解説
static変数とstaticメソッドについて解説します。
複数のインスタンスを作成することに慣れてきましたか?
複数のインスタンスに共通する処理を書くためには、どうしたらよいでしょうか?
たとえば、何個インスタンスを作成したのか数えるためにはどうしたらよいでしょうか?
そこで登場するのがstatic変数やstaticメソッドです。
static変数やstaticメソッドとも呼びます。
static変数やstaticメソッドを定義すると、インスタンスに共通する処理を記述することができます。
サンプルコードを確認しましょう。
メンバ変数の下にcountという変数が宣言されていますが、こちらにstaticという指定があります。
これでstatic変数に変わります。
コンストラクタに注目してください。
コンストラクタの中で、変数countがインクリメントしています。
すると、コンストラクタが呼び出されるたびにstatic変数が1ずつ増えることになります。
次のgetProductCountメソッドに注目していください。こちらもstaticという指定になっています。
これでstaticメソッドになります。
staticを指定すると、インスタンスを作成してなくてもアクセスすることができます。
呼び出し側を確認しましょう。Productクラスのインスタンスが2つ作成されています。
この段階で、2回コンストラクタが呼び出されています。変数countが1ずつ増えることになります。
この変数countは、2つのコンストラクタに共通する領域になっていることを忘れないでください。
すると、2個目のインスタンスが出来たときには、変数countは2になっています。
staticメソッドにアクセスする際は、クラス名.メソッド名で簡単にアクセスできます。
getProductCountメソッドでは、countを返しますので、結果は2と表示されます。
static変数やstaticメソッドは便利である一方、きちんと管理しないと思わぬバグを生み出す原因になります。
使うときには限定的にしておきましょう。
以上、static変数とstaticメソッドについて解説しました。
このサンプルコードをJavaタッチタイプゲームとして遊ぶことができます。
投稿者プロフィール
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
- 新入社員2024年11月23日「ゲシュタルト崩壊」とシステム開発
- 新入社員2024年11月23日データベースでテーブル名やフィールド名にスペースを使うことは、一般的には推奨されていません
- 新入社員2024年11月23日「データにはなぜ型が必要なのか?」を2進数の観点から解説
- 新入社員2024年11月23日ディスプレイの解像度の意味と変更方法