ページ 11

JAVAの他クラス(インスタンス?)呼び出し

Posted: 2012年10月24日(水) 20:09
by tomomi
JAVA初心者です。
JAVAの基本的なことを質問します。
メインから別のクラス(インスタンス?)を呼び出すにはどうすればよいでしょうか。

まず、MENU画面を表示させ、ユーザに1~3の数字を入力してもらい、入力された番号のMENU画面に移動するという動作をさせたいです。
下記のプログラムでは初期のMENUを表示させるにとどまっています。ここからswitch文で1~3の画面に飛ばしたいです。
MENU1~3はまだ作っていませんが、それらを呼び出すためにはc言語のように単純に関数名だけを入れておけばよいのでしょうか?
また、JAVAは別のファイルを呼び出すことも可能と聞いたので、できれば、それらは別のファイルで作っておきたいです。
宜しくお願いします。

コード:

import java.io.*;

public class MOJIBOOK{	
	public static void main(String args[]) throws IOException {
		int num = 0;

		while(true){
			System.out.println("=========文字登録=========\n\n");
			System.out.println("----------MENU----------\n");
			System.out.println("1. 文字登録\n2. 登録情報\n3. 終了\n");
			System.out.println("------------------------\n");
		
			while(true){
				BufferedReader r = new BufferedReader (new InputStreamReader (System.in), 1);
				System.out.print("INPUT 1~3 : ");
				System.out.flush();
				String s = r.readLine();
				num = Integer.parseInt(s);
				
				switch(num){
				case 1:{
//					MENU1;		MENU1に移動
					break;
					}
				case 2:
//					MENU2;		MENU2に移動
					break;
				default:
//					MENU3;		MENU3に移動
					return ;
				}
			}
		}
	}
}

Re: JAVAの他クラス(インスタンス?)呼び出し

Posted: 2012年10月24日(水) 22:53
by ISLe
Javaではひとつのソースファイルにひとつのクラスを定義するのが基本です。

正確にはひとつのソースファイルにpublicクラスはひとつしか定義できないという仕様です。
そしてソースファイル名はpublicクラスと同じ名前にする必要があります。
つまり、仮に

コード:

public class Menu1 {
    public void run() {
        // MENU1の処理
    }
}
という感じの中身のソースファイルはMenu1.javaというファイル名でなければいけません。

上記のMenu1クラスを利用するコードは

コード:

Menu1 menu1 = new Menu1(); // Menu1クラスのインスタンスを作成
menu1.run(); // runメソッドを呼び出す
というかたちになります。

Re: JAVAの他クラス(インスタンス?)呼び出し

Posted: 2012年10月24日(水) 23:34
by tomomi
>ISLeさん
詳しい説明ありがとうございました。知りたいことが全部書いてあり、わかりやすかったです!

プログラミングを進めていく中でまた疑問が出てきたので質問したいのですが、別々のファイルで作った中で共通の変数を使いたい場合はどのようにすればよいでしょうか?

Re: JAVAの他クラス(インスタンス?)呼び出し

Posted: 2012年10月26日(金) 17:24
by ISLe
共通の変数を使うという考え方自体がオブジェクト指向にそぐわないのですが、
とりあえずメインのクラス(MOJIBOOK)にフィールドを定義して、
MOJIBOOKクラスの中からは

コード:

Menu1 menu1 = new Menu1();
menu1.run(this);
のようにメソッドを呼び出す際に、引数としてインスタンスへの参照を渡してやればMenu1::runメソッドの中でMOJIBOOKクラスの公開されたメソッドやフィールドにアクセスできます。

Menu1クラス側はこんな感じに。

コード:

public class Menu1 {
    public void run(MOJIBOOK mojibook) {
        // MENU1の処理
        if (mojibook.value == 123) { // こんな感じでフィールドにアクセス
        }
    }
}

新しい質問は新しくスレを立ててもらえると見落としにくいです。

Re: JAVAの他クラス(インスタンス?)呼び出し

Posted: 2012年10月26日(金) 21:18
by tomomi
具体例があると本当にわかりやすいです。
今後は新しいスレッドに新しい質問を書くようにします。
ありがとうございました。