気まぐれjava学習日記

基本情報処理試験に見るjavaコーディングの個性的なグルメメニューを、オタク目線で隅々まで味わい尽くしたい!

フィールド部に鎮座する「クラス型のフィールド変数」の役割って何なの?

2017年05月26日 | 基本情報処理試験Java

ズバリお答えします。

 

それは、自分クラスのメソッドや変数だけでなく、別のクラスが持っている2つの要素にアクセスしたい(2つの要素を使いたい)からです。

(1) staticでないフィールド変数

(2) staticでないメソッド

staticという修飾子がついている「privateでないフィールド変数」「メソッド」には、「クラス名.フィールド変数名」「クラス名.メソッド名()」で、同じパッケージ内に保存した別のクラスから、自由に呼び出して使えるんだったわね(※1つのクラスを1つのファイルとして保存するとき、関連しあって動作するプログラムのファイル群は、同じフォルダの中に保存するのよ。この保存先フォルダをパッケージというの)。クラス名を付けるだけで呼び出せるから、「クラス変数(またはstatic変数、静的変数メンバ)」「クラスメソッド(staticメソッド、静的メソッド)」とも呼ぶわね。

 

一方、staticがついていない「privateでないフィールド変数」「メソッド」にアクセスするときは、そのフィールド変数やメソッドを定義しているクラスの「インスタンス」をnew生成して、直接「new生成したインスタンス.メソッド」で呼び出すか、new生成したインスタンスに名前をつけて(つまり適当な名前のクラス型変数に、「=」でnew生成したインスタンスを代入して)、「インスタンスの名前.フィールド変数」や「インスタンスの名前.メソッド」の呼び出し方で、同じパッケージ内に保存した別のクラスから自由に呼び出して使えるんだったわね。こうして呼び出すstaticのついていないフィールド変数を「インスタンス変数」とか「オブジェクト変数」と読んだり、同様にstaticのついていないメソッドを「インスタンスメソッド」とか「オブジェクトメソッド」と言うわね。私的には「インスタンス~」の呼び名の方がしっくりくるんだけど。

 

フィールド部に「別のクラス型のフィールド変数」を鎮座させることによって、自分にはない、別のクラスのフィールドやメソッドを使うことができるようになるのよ。逆に言えば、自分クラス以外の別のクラスのフィールドやメソッドを使うためには、自分クラスのフィールドに、使いたい別クラス型の、生きたフィールド変数を持っていないといけないのよね。「生きている」っていうのは、この変数にnewしたインスタンスが代入されている、って言う意味よ。

 

実際の試験問題を見ただけでは、本当に、なんでこんな面倒なことしてるのかしら、クラスを分けてコーディングしているだけでも、無駄にコード行数を浪費しているだけなのに、ってつくづく思うんだけど、実際のプログラム現場ではこんな風に1つのクラスしか借りに来ない、ってことは全然ないんだからね。

 

というわけで、「欲張りな使い方をするため」というのが答えでした。自分のもの(自分のクラスで定義したもの)だけじゃ足りないから、他人のもの(他のクラスで定義したもの)を借りちゃおうっていう算段よ。実際の現場では、初めにみんな(いろんなクラス)で使えそうな汎用性の高いフィールドやメソッドだけをコンパクトにまとめて1つのクラスを作っちゃうのよ。それをいろんなクラスが必要な時にいつでも借りて使いまわすの。自分たちのクラス内で同じフィールドやメソッドを何度も作る手間を省き、同時にコード行数を減らして無駄なメモリを使わないようにするの。私たちの生活も本来そうあるべきかも、って考えさせられちゃうわね:

ジャンル:
ウェブログ
この記事についてブログを書く
« インスタンスはどうして必要... | トップ | 自分クラスのフィールドに鎮... »
最近の画像もっと見る