・メソッドとフィールド

「・メソッドとフィールド」の編集履歴(バックアップ)一覧に戻る

・メソッドとフィールド - (2010/12/10 (金) 22:15:42) のソース

Javaのプログラムはクラスを設計し、そのクラスからモノを作り出して処理を行うということは前のページにてご説明しました。このページでは設計図であるクラスを実際にどのように記述するのかを簡単に見ていきます。 
例として計算機というモノを作り出すことを考えてみます。計算機に必要なものは加算や減算といったデータを処理する「機能」と、計算対象や計算結果などの「データ」に分けることができます。Javaでは「機能」をメソッドと呼び「データ」をフィールドと呼びます。 
クラスには、そのクラスから作り出されるモノが持つ機能(メソッド)とデータ(フィールド)を記述していきます。 
class クラス名{
  フィールド1
  フィールド2
  ...
  メソッド1
  メソッド2
  ...
}
どんなメソッドとフィールドを用意するかでそのクラスから作り出されるものが決まります。目的の処理を行わせるために、適切なメソッドとフィールドを設計しなければなりません。 
例えばテレビクラスを作ったとします。このクラスから作り出されるものはテレビです。テレビにはテレビを映すという機能やチャンネルを変えるという機能があり、現在のチャンネルというデータがあります。そしてテレビに対して「テレビを映せ」とメソッドを呼び出したりするわけです。 
メソッド
では今度はメソッドをどのように記述するかです。メソッドの書式は次のようになっています。 
[修飾子] 戻り値のデータ型 メソッド名(引数1, 引数2, ....){

}
ここでは詳しく解説はいたしませんが、メソッドは呼び出す時、単に呼び出すだけではなく値を指定することもできます。例えテレビに対して「チャンネルを変えろ」というメソッドを呼び出すことも出来ますが、「チャンネルを"1"に変えろ」と何か値を指定して呼び出す場合もあります。また「現在のチャンネルを教えろ」というメソッドを呼び出せばテレビが持っているデータを参照して呼び出し元に値を返してきます。 
ここでは説明のために一番簡単な構成のメソッドを見てみます。 
void メソッド名(){

}
引数も戻り値もないメソッドです。クラスの場合「{」から「}」の間にメソッドやフィールドを記述しましたが、メソッドの場合も「{」から「}」の間にメソッドが行いたい処理を記述します。 
では挨拶だけをする簡単なクラスを作成してみます。 
class Robot{
  void hello(){
    System.out.println("こんにちは");
  }

  void bye(){
    System.out.println("さようなら");
  }
}
Robotクラスの中にhelloメソッドとbyeメソッドを用意しました。helloメソッドは呼び出されると「こんにちは」と表示します。またbyeメソッドは呼び出されると「さようなら」と表示します。このように必要な機能をメソッドとして追加しくことで、そのクラスから作成されるモノが持つ機能が増えていくことになります。 
フィールド
次はフィールドをどのように記述するかです。フィールドの書式は次のようになっています。 
[修飾子] データ型 変数名;
ここでは詳しく解説はいたしませんが、フィールドには変数を記述します。変数というのは値を一時的に保管する場所のことで、値のデータ型と名前を指定します。データ型とは値の種類のことで例えば数値とか文字列などがあります。名前は保管場所を識別するために付けられた名前です。 
例えば次のように記述します。 
int old;
String name;
整数を扱うoldという名前の変数と、文字列を扱うnameという名前の変数を記述しました。 
では数値をカウントするクラスを作成してみます。 
class Counter{
  int num;

  void init(){
    num = 0;
  }

  void count(){
    num = num + 1;
  }

  void printNum(){
    System.out.println(num);
  }
}
Counterクラスの中に1つのフィールドと3つのメソッドを用意しました。initメソッドを呼び出すとnum変数に0を格納し、countメソッドを呼び出すとnum変数に格納されている値に1を加えて再度num変数に格納します。そしてprintNumメソッドを呼び出すとnum変数に格納されている値を出力します。 
このようにフィールドは同じクラスのメソッドによって値を設定したり取り出したりして使われます。 





&sizex(5){わからないところがあったら以下に書き込んでください。}
#comment_num2(,log=卒論用@wiki/コメントログ,vsize=10)