質問: new QB();」とすると、コンパイルは通るのですが、実行時「NullPointerException」がでてしまいます。仕様の何に抵触しているのでしょうか? たぶん「継承」、「初期化」あたりの問題と思いますが、よく分かりません。JAVAの仕様を理解したいので回答宜しくお願いします。
回答: なるほど、B(1)を見落としてた。 クラスへの最初の参照がインスタンス化であれば、タイミングは同じなんだけどね(実際そういう処理が多いだろうし)。 satomi氏のコードではstaticメソッドだけど、staticフィールドへの参照でもいいし、またはClass.forName()でもいい。 ロードとインスタンス化を切り離して考えられれば、main()のあるクラスとないクラスの扱いに違いがないことが理解できるんだろう。 main()というstaticメソッドはインスタンス化とは関係がない。