こんな書き方できたのね。
public class Hoge { public static void main(String[] args) { new Hoge(); new Hoge(); new Hoge("foo"); } { System.out.println("A"); // ★ } static { System.out.println("B"); } public Hoge() { System.out.println("C"); } public Hoge(String s) { System.out.println("D"); } }
インスタンス初期化子 (instance initializer) って言うらしいです。
----
追記:
public class Hoge { public static void main(String[] args) { new Foo(); } { System.out.println("A"); } static { System.out.println("B"); } public Hoge() { System.out.println("C"); } { System.out.println("E"); } static class Foo extends Hoge { static { System.out.println("F"); } public Foo() { System.out.println("H"); } { System.out.println("G"); } } }
こうなると何がなんだか。。。