では、次にmainメソッドです。ここで、自分自身のTest4クラスを新しく生成しています。では、1行ずつ働きを説明していくことにしましょう。
Test4 myWindow;
これは、「myWindow」という変数を定義する部分です。変数の型は「Test4」。そう、Test4クラス型の変数を定義してるんです。
なんか変な感じがしますが、Javaではこんなふうに定義したクラスの型の変数を作ることができます。そしてその変数に新しいクラスを放り込み、その変数を使ってさまざまな操作をするのです。といっても、「myWindow = Test4」としてもダメです。クラスの場合は「new」というものを使って新しいクラスの部品を作り出し、それを設定してやらないといけません。
myWindow = new Test4 ();
こんな具合ですね。これで変数「myWindow」に、新しく生成したTest4クラスを収めます。クラスは、こんな具合に「new ~」というものを使って新しく生成することができるのです。
このTest4のようなクラス定義というのは、いってみれば「クラスの設計図」みたいなものです。
newを実行すると、その設計図を元に、実体のあるクラスが作り出され、変数に収められるのです。クラスを実際に扱うときは、このようにnewで新しいクラスの分身(?)みたいなものを作り出し、それを操作します。設計図を直接操作することはできないのです。
この「
newで作ったクラスの分身」を「インスタンス」といいます。クラスが設計図なら、これは設計図を元に作った実際の家です。つまり、newでインスタンスを作ると、これは実際に操作できるようになるのですね。
myWindow.setVisible(true);次に、「myWindow」の中の
setVisible()というメソッドを呼びだし、newで作り出したウィンドウを画面に実際に表示しています。え?「なんでmyWindowの中にそんなメソッドがあるんだ? いつ作ったんだ?」ですって?
そう疑問をもつ人も多いでしょうね。でも、よく考えてみてください。変数myWindowの中には、新しく作ったTest4クラスのインスタンスが入っています。つまり変数myWindowを操作するというのは、そこに入っているTest4クラスを操作する、ということなのです。
そして、Test4クラスは、
Frameクラスを継承して作られています。そう、わかってきましたね。この
Frameクラスに、実は
setVisible()という「ウィンドウを画面に表示するメソッド」が用意されていたのです。
この
setVisibleは、引数に
trueを指定すると画面に表示し、
falseを指定すると非表示にする働きをします。この「
true」「
false」というのは「
真偽値(boolean)」と呼ばれる型の値で、二者択一の状態を示すのに用いられます。
これで、mainメソッドでどんなことが行なわれていたかわかってきましたね。
が、実は、このmainメソッドは、通常はもっと簡単に書きます。
public static void main (String args []) {
new Test4 ().setVisible(true);
}
こんな具合です。Test4をnewすると同時にその
newしたもののsetVisible()を呼び出しているわけです。これだけを見るとよくわからないでしょうが、先のように1つ1つ分解して考えれば、どういう働きをしているかわかりますね。
まあ、書くときはこのほうがはるかに簡単ですから、「
new 《クラス》.setVisible(true);」という書き方をそのまま覚えてしまいましょう。