パブリックのクラス記述法
Copyright(C) 18Sep2013 coskx
大きなプログラムでは,クラスはパブリックとして宣言され,他のソースファイルから使用が可能なように記述する。
その場合,1つのファイルには1つのクラスを記述するようになっている。
例えば,この学習資料で取り上げているプログラムでは1つのファイルにまとめているので,次のようになっている。
List 1 本文で説明用に記述しているclass (Pointarray.java) /* Pointarray.java */
class Point { //このクラスをpublicにはできない
public int x; /*x座標*/ //この行のpublicは省略可能
public int y; /*y座標*/ //この行のpublicは省略可能
Point() {
}
public Point(int ix, int iy) { //この行のpublicは省略可能
x=ix;
y=iy;
}
}
public class Pointarray {
public static void main(String[] args) {
Pointarray mainprg = new Pointarray();
}
Pointarray() {
Point[] pnt= new Point[3];
int i;
for (i=0; i<3; i++) pnt[i]= new Point();
for (i=0; i<3; i++) {
pnt[i].x=i*10;
pnt[i].y=i*3;
}
for (i=0; i<3; i++) {
System.out.printf("%d %d\n", pnt[i].x, pnt[i].y);
}
}
}
/*** 実行結果
0 0
10 3
20 6
***/
大きなプログラムでは1つのファイルには1つのクラスを記述するようになる。
その場合,mainになるクラスが,別のファイルに記述したクラスを利用できるように,
クラスをパブリックにする。
List 2.1 他から利用できるpublic class Point (Point.java)
/* Point.java */
public class Point { //この行のpublicは省略可能
public int x; /*x座標*/ //この行のpublicは省略可能
public int y; /*y座標*/ //この行のpublicは省略可能
Point() {
}
public Point(int ix, int iy) { //この行のpublicは省略可能
x=ix;
y=iy;
}
}
List 2.2 本来のmainを持つクラスの記述 (Pointarray2.java)
/* Pointarray2.java */
public class Pointarray2 {
public static void main(String[] args) {
Pointarray2 mainprg = new Pointarray2();
}
Pointarray2() {
Point[] pnt= new Point[3];
int i;
for (i=0; i<3; i++) pnt[i]= new Point();
for (i=0; i<3; i++) {
pnt[i].x=i*10;
pnt[i].y=i*3;
}
for (i=0; i<3; i++) {
System.out.printf("%d %d\n", pnt[i].x, pnt[i].y);
}
}
}
このように2つのファイルに分けて,クラス名にはpublic修飾を付けて記述する。
この2つのファイルは同じフォルダ内に置く。
そしてmainを持つファイルを指定してコンパイルして実行すると,
クラスPointを使用していることを認識して,クラスPointを持つPoint.java
を探してコンパイルしてリンクして実行してくれる。
実行の様子 javac 1.7.0_25
>javac Pointarray2.java
>java Pointarray2
0 0
10 3
20 6
クラスPointを持つPoint.javaを探してコンパイルしてリンクして実行してくれる。と説明したが,ただし,実際の作業では上記の実行の前に,作業フォルダに移動している必要がある
例えば作業フォルダが
C:\Users\xxx\work
の時は
cd C:\Users\xxx\work
とする。次に環境変数を整える(この例はwindowsの環境変数を自動的に整えるためのコマンドである)
for /F %i in ( 'dir "C:\Program Files\Java" /b ^| find "jdk"' ) do (set CURRENTJAVA=%i)
set CLASSPATH=.;"%SystemDrive%\Program Files\Java"
set JAVAPATH="%SystemDrive%\Program Files\Java\%CURRENTJAVA%\bin"
set path=%path%;%JAVAPATH%
set JAVA_HOME="%SystemDrive%\Program Files\Java\%CURRENTJAVA%"
この作業を行った後にコンパイルと実行を行う。