Javaによるオブジェクト指向プログラミング
Javaのクラスは参照型(reference type)です。
注)Javaのローカル変数は、明示的に初期化しなければなりません。
注)Javaのメンバー変数は、明示的に初期化しなくても暗黙的にデフォルト値(default value)で初期化されます。
robot.java
class Robot {
private double x, y;
Robot() {
set(0, 0);
}
Robot(double x, double y) {
set(x, y);
}
void set(double x, double y) {
this.x = x;
this.y = y;
}
double getX() {
return x;
}
double getY() {
return y;
}
void move(double dx, double dy) {
x += dx;
y += dy;
}
void print() {
System.out.println("x = " + x);
System.out.println("y = " + y);
}
}
main.java
class Main {
public static void main(String... args) {
Robot robot1 = new Robot();
robot1.move(1, 1);
robot1.print();
System.out.println("x = " + robot1.getX());
System.out.println("y = " + robot1.getY());
Robot[] robot2 = new Robot[]{new Robot(), new Robot()};
for (Robot robot : robot2) {
robot.move(1, 1);
robot.print();
}
int n = 10;
Robot[] robot3 = new Robot[n];
for (int i = 0; i < robot3.length; i++) {
robot3[i] = new Robot(0, 0);
robot3[i].move(i, i);
robot3[i].print();
}
}
}
コンパイル
javac0.bat(ファイル名をjavac.batにすると暴走します)
set JAVA_HOME=D:\sdk\jdk set path=%path%;%JAVA_HOME%\bin javac *.java
実行
java0.bat(ファイル名をjava.batにすると暴走します)
set JAVA_HOME=D:\sdk\jdk set path=%path%;%JAVA_HOME%\bin java Main pause
継承
inheritance.java
class Position {
double x, y;
Position() {
set(0, 0);
}
Position(double x, double y) {
set(x, y);
}
void set(double x, double y) {
this.x = x;
this.y = y;
}
}
class Robot extends Position {
Robot() {
super();
}
Robot(double x, double y) {
super(x, y);
}
}
class Main {
public static void main(String... args) {
Robot robot0 = new Robot();
System.out.println("x = " + robot0.x);
System.out.println("y = " + robot0.y);
Robot robot1 = new Robot(1, 1);
System.out.println("x = " + robot1.x);
System.out.println("y = " + robot1.y);
}
}
packageの作成とimport
packageの作成
D:\pkg\pkg1\pkg2\pkg3\Hello.java
package pkg1.pkg2.pkg3;
public class Hello {
public Hello() {
System.out.println("Hello!");
}
}
packageのコンパイル
D:\pkg\javac0.bat(ファイル名をjavac.batにすると暴走します)
set JAVA_HOME=D:\sdk\jdk set path=%path%;%JAVA_HOME%\bin javac D:/pkg/pkg1/pkg2/pkg3/*.java
JARライブラリの作成
D:\pkg\jar0.bat(ファイル名をjar.batにすると暴走します)
set JAVA_HOME=D:\sdk\jdk set path=%path%;%JAVA_HOME%\bin jar cfv lib.jar pkg1
注)jar cfv lib.jar D:/pkg/pkg1 とするとうまくいきません!
Mainクラスの作成(packageのインポート)
D:\src\main.java
import pkg1.pkg2.pkg3.Hello;
class Main {
public static void main(String... args) {
new Hello();
//new pkg1.pkg2.pkg3.Hello();
}
}
Mainクラスのコンパイル
D:\src\javac0.bat(ファイル名をjavac.batにすると暴走します)
set JAVA_HOME=D:\sdk\jdk set path=%path%;%JAVA_HOME%\bin javac -cp D:/pkg *.java
Mainクラスの実行
D:\src\java0.bat(ファイル名をjava.batにすると暴走します)
set JAVA_HOME=D:\sdk\jdk set path=%path%;%JAVA_HOME%\bin java -cp .;D:/pkg Main pause
Mainクラスのコンパイル(JARライブラリを使った場合)
D:\src\javac0j.bat(ファイル名をjavac.batにすると暴走します)
set JAVA_HOME=D:\sdk\jdk set path=%path%;%JAVA_HOME%\bin javac -cp D:/pkg/lib.jar *.java
Mainクラスの実行(JARライブラリを使った場合)
D:\src\java0j.bat(ファイル名をjava.batにすると暴走します)
set JAVA_HOME=D:\sdk\jdk set path=%path%;%JAVA_HOME%\bin java -cp .;D:/pkg/lib.jar Main pause
access modifier | same class | same package | subclasses in other package | from anywhere |
---|---|---|---|---|
public | ○ | ○ | ○ | ○ |
protected | ○ | ○ | ○ | × |
no modifier | ○ | ○ | × | × |
private | ○ | × | × | × |
参考サイト
- Controlling Access to Members of a Class
- Access modifiers in java - Javatpoint
- Access Modifiers in Java
- jarファイルを作成しよう
- JARライブラリの作成と利用