第十四章 クラスとパッケージ
クラスを作る
他のクラスを作ってクラスメンバを呼び出してみましょう。
Child.class
目次
1.複数のクラスを作る
Javaに限らず多くのプログラム言語は、複数のクラスを作ることができます。
mainメソッドから、「クラス名.メンバ名」とすることで、
他のクラスに書かれたメンバを使用することができます。
クラスはファイルなので、使いまわしが楽に行えます。
汎用的に使えそうなメソッドを作ったら、機能別にクラスにしておくといいでしょう。
「クラスを呼ぶ」というよりも、
「クラスのメンバを呼ぶ」
といった方がいいだろう。
ほほう!
このページでは、Child_01クラスのメンバを、
Parent_01クラスから呼び出してみましょう。
2.Child_01クラスを作ろう
先ずは普通に Child_01クラスを作ってみましょう。
今までのクラスと同じように、mainメソッドから、メンバを呼び出してみます。
//Child_01.java
class Child_01 {
static String value = "Hello! I'm Child_01!";//メンバ
static void method_01(){//メンバ
String msg = "This is class Child_01 !";
System.out.println(msg);
}
public static void main(String[] args){
String hello = value;
System.out.println(hello);
method_01();
}
}
コマンドライン
>cd ws
ws>javac Child_01.java
ws>java Child_01
Hello! I'm Child_01!
This is class Child_01 !
ここまでは復習だ。
大丈夫か?
OKOK。
3.Parent_01クラスを作ろう
Parent_01クラスの mainメソッドから、Child_01クラスのメンバを使ってみましょう。
他のクラスのクラスメンバを使うには以下のようにします。
クラスメソッドの使い方
クラス名.メソッド名();
同じクラス内ではクラス名が省略できたが、
他のクラスから呼び出す場合は省略できない。
まあそうでしょうね。
それにしても
同じクラス内のメソッドを呼ぶのと
書式は同じなんですね。
//Parent_01.java
class Parent_01{
public static void main(String[] args){
String hello = Child_01.value;//Child_01クラスの変数にアクセス
System.out.println(hello);
Child_01.method_01();//Child_01クラスのメソッドにアクセス
}
}
ほとんど Child_01の mainメソッドを
コピーしただけだな。
完成したら、Child_01.java と同じワークフォルダに保存しましょう。
コマンドライン
ws>javac Parent_01.java
ws>java Parent_01
Hello! I'm Child_01
This is class Child_01 !
実行したクラスでないクラスを
利用できたな。
これで他の人が作ったクラスも使える。
なるほど!
他の人が作ったクラスっスか!
全部自分で作らなくても
他力本願で頑張るのね。
ちょっと言い方が...。
Javaに元々掲載されている
便利なクラス(*1)がいっぱいある。
先ずはこれを使えるようになりたい。
複数のソースファイルをコンパイル
必要なソースファイルがすべて同じフォルダにある場合、
mainメソッドがあるソースファイルをコンパイルすれば、
そのクラスで使うソースファイルも自動的にコンパイルされます。
複数のクラスファイルを実行
クラスを実行するときには、クラスに使用される他のクラスファイルが
正しいフォルダに配置されていることが必要です。
ソースファイルは無くても構いません。
4.Child_01クラスの mainメソッドはいらない
Child_01.class を直接使うことがなければ、
mainメソッドは必要ありません。
mainメソッドを省いた方がいいでしょう。
//Child_02.java
class Child_02 {
static String value = "Hello! I'm Child_02!";//メンバ
static void method_01(){//メンバ
String msg = "This is class Child_02 !";
System.out.println(msg);
}
}
//Parent_02.java
class Parent_02{
public static void main(String[] args){
String hello = Child_02.value;
System.out.println(hello);
Child_02.method_01();
}
}
ちなみに「Parent_02.java」をコンパイルすると、
Parent_02.javaに使用される「Child_02.java」も、自動的にコンパイルされます。
コマンドライン
ws>javac Parent_02.java
ws>java Parent_02
Hello! I'm Child_02!
This is class Child_02 !
お疲れ様でした。