Java のコンソールアプリケーションのエントリポイントは public static void main(String[] args) なので、static です。ここから呼び出す事のできるメソッドと振る舞いのサンプルは、以下以降になります
Main.java
拡張子:
public class Main {
public static void main(String[] args) {
// static 内から単純にメソッド名で呼べるのは、Main 内の static メソッド
staticMethod1(); // Main. を省略
Main.staticMethod2();
Sub.staticMethod1(); // Sub. を省略はできません
Sub.staticMethod2();
}
public static void staticMethod1() {
System.out.println("Main.staticMethod1()");
}
public static void staticMethod2() {
System.out.println("Main.staticMethod2()");
}
}
Sub.java
拡張子:
public class Sub {
public static void staticMethod1() {
System.out.println("Sub.staticMethod1()");
}
public static void staticMethod2() {
System.out.println("Sub.staticMethod2()");
}
}
public class Main {
public static void main(String[] args) {
// instance メソッドは、自分自身のインスタンスを作成して呼びます
Main main = new Main();
main.instanceMethod1();
main.instanceMethod2();
// 同様に他のクラスもインスタンスを作成して呼びます
Sub sub = new Sub();
sub.instanceMethod1();
sub.instanceMethod2();
}
public void instanceMethod1() {
System.out.println(new Object(){
@Override
public String toString() {
// this は、Object のインスタンスです
return this.getClass().toString() + ":instanceMethod1()";
}
}.toString());
}
public void instanceMethod2() {
System.out.println(new Object(){
@Override
public String toString() {
// this は、Main のインスタンスです
return Main.this.getClass().toString() + ":instanceMethod2()";
}
}.toString());
}
}
Sub.java
拡張子:
public class Sub {
public void instanceMethod1() {
System.out.println(Sub.this.toString() + ":instanceMethod1()");
}
public void instanceMethod2() {
System.out.println(Sub.this.toString() + ":instanceMethod2()");
}
}