Java

【Cではincludeだけどjavaでは何??】複数のクラスを用いた開発

目次
  1. 別のクラスのメソッドを用いる
  2. クラスが増えた場合→各クラスをパッケージにまとめる
    • クラスをパッケージに所属させる方法
    • 別のパッケージにあるクラスを呼び出す
  3. Java APIに含まれる代表的なパッケージ

別のクラスのメソッドを用いる

通常、メソッドはインスタンス化しないと使用することができないが、staticをつけることによってインタンス化しなくても使用するとができる mainメソッドにstaticがついているのもこのためである。 違うクラスのメソッドを使用する場合はメソッド名だけでは、呼び出すことはできない

 public class Hello_world {
  public static void main(String[] args) {
    プログラムをここに記述する
  }
}
class CalcLogic{
	public static int tasu(int a, int b){
		return a+b;
	}
	public static int hiku(int a, int b){
		return a-b;
	}
}
public class Calc{
	public static void main(String[] args){
	int a = 10;
	int b = 2;

	int total = CalcLogic.tasu(a,b);
	int dleta = CalcLogic.hiku(a,b);

	// int total = tasu(a,b);
	// int dleta = hiku(a,b);

	System.out.println("足すと"+total+"\n引くと"+delta);
	}
}

クラス名を書かないと次のようになる

 Calc.java:19: エラー: シンボルを見つけられません
int total = tasu(a, b);
^
シンボル: メソッド tasu(int,int)
場所: クラス Calc
Calc.java:20: エラー: シンボルを見つけられません
int delta = hiku(a, b);
^
シンボル: メソッド hiku(int,int)
場所: クラス Calc

クラスが増えた場合→各クラスをパッケージにまとめる

.javaのファイルにクラスが増えてくるとのJavaのファイルをまとめて扱うことで、扱い易くなる

クラスをパッケージに所属させる方法

ソースコードの先頭にpackage文を記述する(パッケージに親子関係はない) package 所属させたいパッケージ名; ※パッケージを作成する場合は、そのディレクトリを作成する。 例えば、、、package hoge.huga.fooと作成した場合は、hoge/huga/fooの階層のディレクトリを作成する必要がある。

//このファイルはcalcappというディレクトリを作成しその中におく
public class Calsc{
	public static int tasu(int a, int b){
		return a+b;
	}
	public static int hiku(int a, int b){
		return a-b;
}

別のパッケージにあるクラスを呼び出す

  • パッケージが同じだったらクラス名は同じではダメだが、パッケージが異なれば同じクラス名を使っても良い →クラス名(FQCN=完全限定クラス名)が異なるので両者を区別できる。
  • 長い完全限定クラス名を書くのは大変である。しかし、import文を使うことによってFQCN入力の面倒さを軽減できる ※import文はソースコードの先頭にかくが、package 文より後に記述する
  • パッケージを作成する場合は、そのディレクトリを作成する。 例えば、、、package hoge.huga.fooと作成した場合は、hoge/huga/fooの階層のディレクトリを作成する必要がある。 import パッケージ名.クラス名;
//packageしたファイル
ackage calcapp;
public class main{
	public static int tasu(int a, int b){
		return a+b;
	}
	public static int hiku(int a, int b){
		return a-b;
}
//FQCN=完全限定クラス名を用いてメソッドを呼び出す
class cal {
	public static void hoge(String[] args){
		int total = calcapp.main.CalcLogic.tasu(a, b);
	}
}
//import文を用いてメソッドを呼び出す
//import文を書いた場合でもFQCNで呼び出しても実行はできる
import calcapp;
class cal {
	public static void hoge(String[] args){
		int total = CalcLogic.tasu(a, b);
	}
}

Java APIに含まれる代表的なパッケージ

詳しく知りたい方は、java API リファレンス

  • java.lang: Javaに欠かせない重要なクラス群  importしなくても自動的にimportされる
  • java.util: プログラミングを便利にする様々なクラス群
  • java.math: 数学に関するクラス群
  • java.net: ネットワーク通信などを行うためのクラス群
  • java.io: ファイルの読み込みなど、データを逐次処理するためのクラス群