図Prog9_3_㏛cは「参照渡しの引数を使うメソッド」の説明のための例である。このプログラムの最後にコメントで実行結果が示されています。
今週のお題「おとうさん」
図Prog9_3_srcでmainメソッドの外で定義されているメソッドと変数や配列は全てstaticであり、Prog9_3クラスの中で宣言されています。このよにクラス内に書かれたメソッドや配列を定義すると,それらはそのクラス内に書かれたメソッドから見えます。
図Prog9_3_srcについて:
3行:配列bの定義
4行:int bの定義
5から11行: メソッドfの定義
引数として、intだけでなく、配列も定義されています。配列を引数とする場合その受け渡しは「値渡し」でなく、「参照渡し」になります。値ではなく、参照が渡されるのです。このメソッドの機能は配列tのmからnまでの和を計算し返すことです。
12から18行:mainメソッド:
intのmとnが定義されています。更に配列aが定義され初期化されています。これらはmainの中だけで有効な変数や配列です(ローカル変数)。
15行: メソッドfが呼ばれています。mainからfへmとnは値がコピーされます。aは配列であるので、aの参照がメソッドfのtへコピーされます。このようにすると、メソッドfの中で、tという配列名でmainの配列aを参照することができます(書き込むこともできる)。ここでは配列のindexが0から9まで値の和を計算して、返し、表示しています(45)。
16行: 配列aの値が、配列bへコピーされます。注意すべき点は配列bはmainの外で定義されているということです。このようにmainの外で定義されていても、それらの変数や配列にメソッドからアクセスすることができます。
17行: 配列bの参照をメソッドfに渡して、そのデータを使うことができます。
ここでstaticで定義したメソッド、配列、変数は全てclass Prog9_3の中のことです。これらはクラス Prog9_3に属するクラス変数、クラスメソッドと言われるものです。これらはオブジェクトを作らなくても、クラスの中で定義するだけで、使えます。オブジェクト指向プログラミングを学習するとクラスに属するメソッドや変数とオブジェクトに属するメソッドや変数の違いを理解できます。
非オブジェクト指向プログラミングではローカル以外は全てstaticで定義する必要があります。C言語ではオブジェクトを作成しませんが、それと同じようなプログラミングということになります。