Heim Java javaLernprogramm Konstruktionsmethode der untergeordneten Elternklasse bei der JAVA-Vererbung

Konstruktionsmethode der untergeordneten Elternklasse bei der JAVA-Vererbung

Nov 29, 2019 pm 05:06 PM
构造方法 继承

Konstruktionsmethode der untergeordneten Elternklasse bei der JAVA-Vererbung

Zunächst verfügt der Konstruktor selbst über einen impliziten Konstruktor ohne Argumente (Standard):

①Schreiben Sie den Konstruktor nicht in die erste Codezeile Klasse ist die Tatsache, dass es ein Standardkonstrukt ohne Argumente gibt (das System schreibt es implizit für Sie)

public class Student {
        private String name;
//        public Student() {}      隐式地“写”在这里,你看不见
//  Strudent类中虽然没有写构造方法,但相当于有上面的无参构造
//   只不过是隐式的,你看不见
}
Nach dem Login kopieren

(empfohlenes Video: Java-Video-Tutorial )

②Schreiben Sie nur den Konstruktor mit Parametern, was nur dem Konstruktor mit Parametern entspricht (die implizite parameterlose Konstruktion wird abgeschirmt und ignoriert und als ungültig betrachtet)

public class Student {
        private String name;
        public Student(String name) {
            this.name=name;
        }
//  此时原来Strudent类中的隐式的无参构造方法被屏蔽了,无效了
//  类中只有带参构造
}
Nach dem Login kopieren

③ Wenn Sie sowohl parameterlose als auch parametrisierte Konstruktoren haben möchten, müssen Sie die parameterlosen und parametrisierten Konstruktoren explizit schreiben

public class Student {
        private String name;
        public Student() {}
// 显式地将无参构造写出来        
        public Student(String name) {
            this.name=name;
        }
//  若想Strudent类中拥有无参构造方法,必须显式地写出来
}
Nach dem Login kopieren

Um die Vererbung weiter zu kombinieren, müssen Sie die untergeordneten und übergeordneten Klassen berücksichtigen:

④Im Konstruktor der Unterklasse (ob ohne Parameter oder mit Parametern) enthält die erste Codezeile in der Methode tatsächlich implizit den Parameterlosen Konstruktor der übergeordneten Klasse

Das heißt: super()

public class Stu extends Student {
    private String name;
    public Stu() {
    // super();
    // 在子类的无参构造中,super()是隐式的“写”在这里的
    }
    
    public Stu(String name) {
    // super();
    this.name=name;
    // 在子类的带参构造,上面的super()同样也是隐式的“写”在这里的
    }
}
Nach dem Login kopieren

Aus diesem Grund wird beim Aufruf des Konstruktors einer Unterklasse zuerst der parameterlose Konstruktor der übergeordneten Klasse aufgerufen, da der Standardwert super() vorhanden ist.

⑤ Ähnlich wie bei ② oben blockiert super(xx) beim Schreiben eines parametrisierten Konstrukts das implizite super()

public class Stu extends Student {
    private String name;
    
    public Stu(String name) {
    // super();  原来隐式写在这里的super()被屏蔽了,无效了
    super(name);
    
    // 在子类的带参构造, 由于的super(name)的存在,super()无效了
    //此时子类的带参构造中,只有super(name)
    }
}
Nach dem Login kopieren

Aus diesem Grund, wenn die übergeordnete Klasse nicht vorhanden ist Wenn es sich um einen parameterlosen Konstruktor handelt (das heißt, es gibt nur einen parametrisierten Konstruktor – entsprechend Fall 2), kann die Konstruktormethode der Unterklasse nicht kompiliert werden. Dies liegt daran, dass der Konstruktor der untergeordneten Klasse (mit oder ohne Parameter) den parameterlosen Konstruktor der übergeordneten Klasse aufruft. Da der Compiler versucht, super() in zwei Konstruktoren der untergeordneten Klasse einzufügen, der Standardkonstruktor der übergeordneten Klasse jedoch undefiniert ist, meldet der Compiler eine Fehlermeldung.

Um dieses Problem zu lösen, genügt

1) Fügen Sie der übergeordneten Klasse einen Konstruktor ohne Argumente hinzu – fügen Sie der übergeordneten Klasse explizit den Konstruktor ohne Argumente hinzu

2 ) Löschen Sie den benutzerdefinierten parametrisierten Konstruktor in der übergeordneten Klasse – gleichbedeutend mit der Wiederherstellung des standardmäßigen parameterlosen Konstruktors

3) Fügen Sie Super(XXX) zum Unterklassenkonstruktor hinzu – über das Original von ⑤ Blockieren Sie den Standard-super()

Dieser Artikel stammt von der chinesischen PHP-Website, Spalte Java-Tutorial, willkommen zum Lernen!

Das obige ist der detaillierte Inhalt vonKonstruktionsmethode der untergeordneten Elternklasse bei der JAVA-Vererbung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Detaillierte Erläuterung der C++-Funktionsvererbung: Wie werden „Basisklassenzeiger' und „abgeleitete Klassenzeiger' bei der Vererbung verwendet? Detaillierte Erläuterung der C++-Funktionsvererbung: Wie werden „Basisklassenzeiger' und „abgeleitete Klassenzeiger' bei der Vererbung verwendet? May 01, 2024 pm 10:27 PM

Detaillierte Erläuterung der C++-Funktionsvererbung: Wie werden „Basisklassenzeiger' und „abgeleitete Klassenzeiger' bei der Vererbung verwendet?

Wie wirken sich Vererbung und Polymorphismus auf die Klassenkopplung in C++ aus? Wie wirken sich Vererbung und Polymorphismus auf die Klassenkopplung in C++ aus? Jun 05, 2024 pm 02:33 PM

Wie wirken sich Vererbung und Polymorphismus auf die Klassenkopplung in C++ aus?

Beheben Sie den PHP-Fehler: Probleme beim Erben der übergeordneten Klasse Beheben Sie den PHP-Fehler: Probleme beim Erben der übergeordneten Klasse Aug 17, 2023 pm 01:33 PM

Beheben Sie den PHP-Fehler: Probleme beim Erben der übergeordneten Klasse

Mehrfachvererbung in PHP Mehrfachvererbung in PHP Aug 23, 2023 pm 05:53 PM

Mehrfachvererbung in PHP

Berechnen Sie Zinsen für Festgelder (FDs) und Festgelder (RDs) mithilfe eines geerbten Java-Programms Berechnen Sie Zinsen für Festgelder (FDs) und Festgelder (RDs) mithilfe eines geerbten Java-Programms Aug 20, 2023 pm 10:49 PM

Berechnen Sie Zinsen für Festgelder (FDs) und Festgelder (RDs) mithilfe eines geerbten Java-Programms

Ausführliche Erklärung der C++-Funktionsvererbung: Wie kann man Fehler bei der Vererbung debuggen? Ausführliche Erklärung der C++-Funktionsvererbung: Wie kann man Fehler bei der Vererbung debuggen? May 02, 2024 am 09:54 AM

Ausführliche Erklärung der C++-Funktionsvererbung: Wie kann man Fehler bei der Vererbung debuggen?

Verpackungstechnologie und Anwendung in PHP Verpackungstechnologie und Anwendung in PHP Oct 12, 2023 pm 01:43 PM

Verpackungstechnologie und Anwendung in PHP

Verwendung von Polymorphismus und Vererbung in PHP zur Verarbeitung von Datentypen Verwendung von Polymorphismus und Vererbung in PHP zur Verarbeitung von Datentypen Jul 15, 2023 pm 07:41 PM

Verwendung von Polymorphismus und Vererbung in PHP zur Verarbeitung von Datentypen

See all articles