私は昨日Javaで試験を受けました。私には本当にあいまいなものがあります。スタティックメソッドによる非静的コンストラクタへのアクセス?
ルールは単純です:
- staticメソッドは非静的メソッドを呼び出すことはできませんすることはできません。
コンストラクタは戻り値のないメソッドのようなものです。
public class Main { public static void main(String[] args) { Main p = new Main(); k(); } protected Main() { System.out.print("1234"); } protected void k() { } }
Main p = new Main() line prints 1234 k() line raises error
、なぜこれが起こるのですか?上記のJavaのルールと矛盾していませんか?
静的メソッドからコンストラクタを呼び出すことが不可能だった場合は、これまでどんなオブジェクトも構築できませんでした。 –