Warum hat Java keine Initialisierungslisten wie in C ++?

In C++ können Sie eine Initialisierungsliste zum initialisieren der Klasse die Felder vor dem Konstruktor der Ausführung beginnt. Zum Beispiel:

Foo::Foo(string s, double d, int n) : name(s), weight(d), age(n) {
    //Empty; already handled!
}

Ich bin neugierig, warum Java nicht haben eine ähnliche Funktion. Nach Core Java: Volume 1:

C++ verwendet diese spezielle syntax rufen Sie Feld-Konstruktoren. In Java gibt es keine Notwendigkeit für Sie, da Objekte keine Unterobjekte, nur Zeiger auf andere Objekte.

Hier sind meine Fragen:

  1. Was bedeuten Sie durch ", weil Objekte keine Unterobjekte?" Ich verstehe nicht, was ein teilobjekt ist (ich habe versucht es); bedeuten Sie eine Instanziierung einer Unterklasse, die sich ein Oberklasse?
  2. Als dafür, warum Java nicht Initialisierer-Listen wie C++, ich würde davon ausgehen, dass der Grund ist, weil alle Felder sind bereits initialisiert ist standardmäßig in Java und auch da Java verwendet die super Schlüsselwort zum Aufruf der super(oder base in C++, lingo)-Konstruktor der Klasse. Ist das richtig?

InformationsquelleAutor der Frage Jesse Good | 2011-08-22

Schreibe einen Kommentar