static

インスタンス化無しで使える

クラス内の変数やメソッドに「static」を付けるとインスタンス化しなくても利用できるようになります。

プログラムで確認していきましょう。クラスSubの4行目、9行目、11行目にstaticを付けてください。

クラスMainのインスタンス化部分を削除し次のように変更してください。

実行してみましょう。


staticを付けることでインスタンス化することなく変数、メソッドが利用できました。

staticの落とし穴

あるクラスをインスタンス化するとインスタンスはメモリに展開されます。複数インスタンス化するとメモリも複数のエリアに展開されます。従って、クラス内に変数Aがある場合は、インスタンス毎にメモリに存在することになり、違った内容を格納できます。

変数やメソッドにstaticを付けるとプログラムを実行した時点でメモリに展開されます。複数インスタンス化してもメモリに展開されません。従ってクラス内のstatic変数Aは複数インスタンス化しても一つしか存在しないことになります。

staticを付けることによりインスタンス化しなくとも利用できるメリットがありますが、動作を把握しておかないと思わぬ不具合を招いてしまいます。staticを付けるのは慎重に行う必要があります。

mainメソッド

次のメソッドはプログラムが開始されると最初に実行されると紹介しました。

このメソッドを含むクラス内ではstaticを付けないと基本的にエラーになってしまいます。なぜなら最初に実行されるためどのプログラムからもインスタンス化されません。従って、staticにする必要があるのです。

タイトルとURLをコピーしました