Statische Methode, die den Zugriff auf nicht-statische Konstruktor?

Ich eine Prüfung abgelegt hatte gestern auf Java. Es ist etwas, das scheint wirklich zweideutig zu mir.

Regeln sind einfach:

  1. Statische Methode kann nicht Aufruf nicht-statischer Methoden.
  2. Konstruktoren sind eine Art Methode mit keine Rückkehr geben.

    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

Also, warum konnte das passieren? Ist es nicht in Konflikt mit den Regeln von Java vor?

  • Wenn es unmöglich war, ein Aufruf eines Konstruktors aus einer statischen Methode, dann könnte man nicht konstruieren, die ein beliebiges Objekt überhaupt.
Schreibe einen Kommentar