In diesem Artikel werden hauptsächlich relevante Informationen zu Konstruktormethodenaufrufen unter Java-Vererbungsbeziehungen vorgestellt. Ich hoffe, dass dieser Artikel jedem helfen kann, diesen Teil des Inhalts zu verstehen und zu beherrschen.
Detaillierte Erläuterung der Konstruktoraufrufe unter Java-Vererbungsbeziehungen
Wenn beim Erstellen eines Objekts einer Klasse in Java die Klasse eine übergeordnete Klasse hat, wird zuerst der Konstruktor der übergeordneten Klasse und dann die Unterklasse aufgerufen Konstrukteur. Wenn die übergeordnete Klasse keinen Konstruktor definiert, wird der vom Compiler automatisch erstellte Standardkonstruktor ohne Parameter aufgerufen. Wenn die übergeordnete Klasse einen öffentlichen Konstruktor ohne Parameter definiert, wird der Konstruktor ohne Parameter automatisch aufgerufen, bevor der Konstruktor der untergeordneten Klasse aufgerufen wird. Wenn die übergeordnete Klasse nur einen parametrisierten Konstruktor und keinen parametrisierten Konstruktor hat, muss die Unterklasse im Konstruktor explizit super (Parameterliste) aufrufen, um einen parametrisierten Konstruktor anzugeben. Wenn die übergeordnete Klasse einen Konstruktor ohne Parameter definiert, der Konstruktor ohne Parameter jedoch als privat deklariert ist, muss die Unterklasse im Konstruktor auch explizit super (Parameterliste) aufrufen, um einen parametrisierten Konstruktor anzugeben. Wenn die übergeordnete Klasse keinen anderen parametrisierten Konstruktor hat, kann die Unterklasse nicht erstellt werden.
有父类 | 子类 | ||
---|---|---|---|
Public无参构造方法 | Private无参构造方法 | 有参构造方法 | |
无 | 无 | 无 | 所有构造方法都会调用父类的默认构造方法 |
有 | 无 | 无 | 所有构造方法都会调用定义的无参构造方法 |
无 | 无 | 有 | 所有构造方法都必须指定调用某个有参的构造方法,或通过this调用某个其他的构造方法。 |
有 | 无 | 有 | 可以指定调用某个构造方法,如果没有指定,则调用无参构造方法。 |
无 | 有 | 无 | 子类无法构造(父类无法派生子类) |
无 | 有 | 有 | 所有构造方法都必须指定调用某个有参的构造方法,或通过this调用某个其他的构造方法。 |
Zum Beispiel:
class Parent { private String pString; Parent(){ pString = "p1"; } } class Child extends Parent { private String cString; Child() { cString = "c1"; } }
Wenn das Child-Objekt erstellt wird, wird zunächst der Konstruktor der übergeordneten Klasse Parent zur Initialisierung aufgerufen pString auf „p1“ und rufen Sie dann den Konstruktor des Kindes auf, um cString auf „c1“ zu initialisieren.
class Parent { private String pString; private Parent(){ pString = "p1"; } Parent(String s){ pString = "p2"; } } class Child extends Parent { private String cString; Child() { super(""); cString = "c1"; } }
Da die übergeordnete Klasse einen privaten parameterlosen Konstruktor definiert, müssen Sie in der Unterklasse explizit angeben, dass ein parametrisierter Konstruktor aufgerufen werden soll.
Das obige ist der detaillierte Inhalt vonDie Konstruktormethode unter der Java-Vererbungsbeziehung ruft die Implementierungsmethode auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!