クラスを作る - 萌えJava超入門
第十四章 クラスとパッケージ

クラスを作る

他のクラスを作ってクラスメンバを呼び出してみましょう。

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)がいっぱいある。
先ずはこれを使えるようになりたい。
*1 Javaクラスライブラリと呼びます。

複数のソースファイルをコンパイル
 必要なソースファイルがすべて同じフォルダにある場合、
 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 !




お疲れ様でした。




© 2019 awasekagami