libro
www.tuyano.com
初心者のためのJava SEプログラミング入門

基礎知識再び! (4/4)

作成:2010-01-14 16:08
更新:2011-10-11 12:11

■メソッド定義を再考する

では、クラス内にあるメソッドの定義に進みましょう。こちらもクラス定義と似ています。
【修飾子】型 class クラス名 (パラメータ)
    【throws定義】
まず一見してわかるのは、「メソッドには値の型がある」ということです。2番目にある《型》のことですね。これは文字通り、intとかcharといった、値の型そのもののことです。

メソッドの中には、呼び出した元へ値を送り返すものがあるのです。関数みたいに、呼び出すと何かの値を返すようなものですね。そのようなメソッドでは、送り返す値の型をここで指定しておくのです。(こうした、メソッドが返す値のことを「返り値」とか「戻り値」といいます)

では、値を返さないメソッドはどうするのか。――そのときは「void」というのを指定します。これは、「このメソッドは値を返しません」ということを示す予約語なのです。

それから、修飾子について。これは、先に上げたものの他にこういうものが付け足されます。

static
これを宣言すると、このメソッドはクラス内に1つだけしか定義されなくなります。つまり、そのクラスから生成された全てのインスタンスやサブクラスで、共通のメソッドが呼び出されるようになるのです。

このstaticは、「クラスメソッド」を作るのに用いられます。クラスメソッドというのは、インスタンスを作らず、クラスから直接呼び出すことのできるメソッドのことです。「クラス内に1つだけしか定義されなくなる」というのは、いいかえれば「クラスに1つあるだけで、インスタンスを作る必要がない」ということなのですね。

○throwとは?○
さて、最後の「throw定義」というのですが、これはメソッド内に例外処理が発生した場合に処理を送る先を指定するものです。命令がうまくいかなかったときなどの処理に使われます。まあ、現時点では知らなくても大丈夫です。


では、以上を踏まえて、Test4のmainメソッドを見てみましょう。
public static void main (String args []) {
これはつまり、このmainがこのクラスから直接呼び出せるものであり(static)、値を返さず(void)、そして他からも自由に呼び出し可能な(public)ものである、ということを定義しているわけです。

そして、パラメータとしてString配列をもっています。ただし、mainは通常クラスが動作したとき自動的に呼び出されるものですから、普通にプログラムを実行しているだけなら、このString配列のパラメータが使われることはほとんどありません(意識して値を渡すように呼び出すことはありますが)。まあ、今の段階では、「おまじないみたいなもの」だと思ってください。

さて、これでだいたいはわかりましたが、上のルールに違反(?)しているメソッドが1つだけあります。それは「コンストラクタ」です。コンストラクタは、返す値の型がありません。コンストラクタはnewで自身のインスタンスを生成する特別なものなので、他のメソッドとは違う、別格の扱いを受けているのですね。

さあ、これで、今までなんとなくもやもやしていた部分が一通り理解できるようになったわけです。え、まだよくわからない? そうかも知れませんね。まあ、現段階ではそう深く考えなくとも簡単なプログラムを書く上では不自由はないかもしれません。しかし、いつかもう一歩上のプログラムに挑戦したいと思ったとき、これらの基礎知識はどうしても必要になります。ですから、とりあえず頭の片隅にでも入れておいてください。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「初心者のためのJava SEプログラミング入門」に戻る