インスタンスの作成とメソッド呼び出し
では、作成したクラスからインスタンスを作成し、メソッドを呼び出すにはどうすればよいのでしょうか。これは、以下のような形で行います。
●インスタンスの作成
クラス 変数 = new クラス( 引数 );
例:MyObject object = new MyObject();
インスタンスは、newというものを使って作成します。作成されたインスタンスは、そのまま変数などに設定しておけます。
●インスタンス内のメソッドの利用
インスタンス.メソッド( 引数 );
変数 = インスタンス.メソッド( 引数 );
例:object.setName("たろう");
String s = object.getName();
メソッドが何らかの値を返すものであった場合には、getNameの例のように返値を変数などに代入させるような形で実行するのよいでしょう。が、void(何も値を返さない)のメソッドでは返値を変数に入れておく必要はありません。
ちなみに、ここではメソッドの利用だけしか行っていませんが、フィールドも同様にしてクラスやインスタンスから利用することができます。例えば先のサンプルでobject内のnameフィールドを変数などに取り出したければ、
String s = object.name;
このようにすればよいのです。メソッドと同様、クラスやインスタンス名の後にドットをつけ、その後にフィールド名を書けば、そのクラスやインスタンスの中にあるフィールドを利用することができるようになります。
ウインドウを使ったプログラムを作ろう!
クラスからインスタンスを作る方法、そしてメソッドとフィールドの利用方法、それらがわからないとJavaのプログラムは作れません。なぜなら、Javaに最初から用意されているさまざまな機能そのものが、すべてクラスとして用意されているからです。つまり、クラスからインスタンスを作り、その中のメソッドやフィールドを呼び出すという基本的な仕組みがわからないと、用意されている機能すら利用できないのです。
逆に言えば、これらの基本がわかれば、すぐにでもJavaの機能を利用できるようになります。例えば、Javaには「AWT(Abstract Window Toolkit)という、ウインドウやメニューといったGUIを作るための機能がクラスとして用意されています。それらを利用したプログラムを考えてみましょう。
import java.awt.*;
public class Sample {
public static void main(String[] args){
Frame f = new Frame();
Label l = new Label("Hello");
Button b = new Button("OK");
f.add(l,BorderLayout.CENTER);
f.add(b,BorderLayout.SOUTH);
f.setSize(200,100);
f.setVisible(true);
}
}
プログラムを実行すると、テキストとボタンを持ったウインドウが画面に現れます。 |
これを実行すると、画面に「Hello」という文字と「OK」ボタンをもったウインドウが現れます。もっとも、これはただ表示されているだけで、何の機能もありません。プログラムを終了する機能さえありませんから、コマンドプロンプトからCtrlキー+「C」キーを押して強制終了して止めてください。何もできないプログラムですが、ともかくこれだけ短いソースコードで、ちゃんとウインドウを表示したプログラムが作れたことはわかるでしょう?
では、実際にどのようにしてウインドウやボタンのあるプログラムを作っているのか、ざっと見てみましょう。まずは、ウインドウ、テキスト表示、ボタンといった部品のクラスからインスタンスを作ります。
Frame f = new Frame();
Label l = new Label("Hello");
Button b = new Button("OK");
Frameはウインドウ、Labelはテキストを表示する部品、Buttonはプッシュボタンのクラスです。それぞれnewを使ってインスタンスを作成していますね。インスタンスができたら、これらを組み立てていきます。
f.add(l,BorderLayout.CENTER);
f.add(b,BorderLayout.SOUTH);
これは、Frameクラスのインスタンスにある「add」というメソッドを呼び出している部分です。このaddは、ボタンなどの部品をウインドウの中に組み込む働きをします。これで、ウインドウの中にテキストやボタンが組み込まれたわけです。後は、ウインドウの調整をして画面に表示させるだけです。
f.setSize(200,100);
f.setVisible(true);
setSizeメソッドでウインドウの大きさを調整し、setVisibleメソッドで画面に表示をさせています。これですべておしまいです。たったこれだけで、ウインドウを使ったプログラムができてしまったのですね。
皆さんの中には、「ウインドウをドラッグして動かしたり、ボタンをクリックしたら表示が変わったりする処理はいらないのか?」と思った人もいるかもしれません。そういう処理は、いらないのです。なぜなら、既にFrameやButtonといったクラスの中に、そうした必要な機能はすべて組み込まれていて、プログラマが何もしなくてもウインドウはウインドウとして、ボタンはボタンとして機能するようになっているからです。
まだ皆さんにはFrameやButtonといったクラスがどういう働きをするのか、あるいはimportなんて文が新たに付け加えられているけどこれは何なのか、などわからない点ばかりかもしれません。が、少なくとも「クラスからインスタンスを作り、メソッドを呼び出す」という基本だけで、ウインドウを持ったプログラムがちゃんと作れてしまうんだ、ということは理解できたはずです。これが一番大切なことなのです。この基本さえ理解できれば、後は単に「どんなクラスやメソッドが用意されているか」という知識を増やすだけの問題なのですから。
バックナンバー
はじめてのJava(1)「Javaを手に入れよう」はじめてのJava(2)「環境変数をマスターする」
はじめてのJava(3)「Javaのプログラムを動かそう」
はじめてのJava(4)「mainメソッドを使おう」
はじめてのJava(5)「制御文を使おう」