2016-11-22 1 views
-3

Super ist keine statische Variable, daher sollte es mit einer Objektreferenz verwendet werden. Aber hier unten ist das Objekt noch nicht erstellt, also auf welchem ​​Objekt wird Super aufgerufen?Über Konstruktoren, Super und Vererbung

class A{} 
class B extends A{ 
B() { super(); } 

Wenn Objekt von B in Hauptmethode erstellt wird.

+0

Konstruktoren haben eine sehr spezifische Signatur zu folgen '[Sichtbarkeit] ClassName ([Parameter ...])'. Warum würdest du es normalerweise statisch machen? – AxelH

+0

Ich bin mir nicht sicher, was Sie erreichen möchten, aber statische Blöcke werden gemacht, um Ihre Anforderung zu erfüllen. 'static {// beliebiger Code, den Sie beim Laden der Klasse aufrufen müssen, bevor selbst Konstruktoren aufgerufen werden}' – Karthikeyan

+0

Ich schlage vor, dass Sie sich zuerst diese Antwort ansehen. http://StackOverflow.com/a/3903551/762395 – root

Antwort

0

Konstruktoren sind nicht statisch. Dies ist offensichtlich, da Sie this im Konstruktor verwenden können. Das Objekt, an dem es arbeitet, ist bereits vergeben, es ist einfach nicht vollständig initialisiert.

+0

I don ' t wie das Beispiel, da "this" nicht auf den Konstruktor beschränkt ist, sondern von allen nicht-statischen Methoden sichtbar ist. Sie sagen nur, dass Konstruktoren nicht statisch sind;) – AxelH

+0

ich bin nicht gut zu erklären, das ist, was ich gefragt habe, Klasse A {} Klasse B erweitert A {}, jetzt, wenn ich Objekt von B in main, auf Welcher Objektkonstruktor von A wird aufgerufen? – sanidhya

Verwandte Themen