Konzept: Vererbung bedeutet, dass die Definition einer Klasse auf einer anderen vorhandenen Klasse basieren kann, dh die Unterklasse erbt die übergeordnete Klasse und erkennt damit die Wiederverwendung des Code der Elternklasse. Die Beziehung zwischen zwei Klassen: Die übergeordnete Klasse hat im Allgemeinen die Merkmale der gemeinsamen Unterklasse, während die Unterklasse einige personalisiertere Methoden hinzufügen kann. Die Klassenvererbung ist transitiv, dh Unterklassen können weiterhin Unterklassen ableiten, das Klassenkonzept auf der oberen Ebene ist abstrakter und das Konzept der Klassen auf der unteren Ebene ist konkreter.
1. Definieren Sie Unterklassen:
Syntaxformat
[Modifikator] Klasse Subklassen Name erweitert den Namen der Elternklassen {
Unterklasse
}
Modifikator: Public Private Protected Default
Eine Unterklassekörper ist ein neuer eindeutiger Inhalt, der von einer Unterklasse hinzugefügt wird, die auf der Erbscheibe des Inhalts der übergeordneten Klasse basiert. Es kann Mitgliedsvariablen, Mitgliedermethoden, Klassen, Schnittstellen, Baumethoden usw. enthalten.
In einem Unternehmen ist beispielsweise ein Mitarbeiter ein vom Unternehmen eingestellter Mitarbeiter, und ein Manager ist ein Sonderangestellter in der Verwaltungsgesellschaft. Diese Art von Sonderangestellter hat nicht nur die Attribute und Methoden gewöhnlicher Mitarbeiter, sondern auch einige eigene Attribute und Methoden, wie z. B. besondere Zulagen.
Der Code ist wie folgt:
öffentliche Klasse EmployeeClass {private String -Name; // private int id nennen; // Unternehmensnummer Privates Doppelgehalt; // Gehalt private String -Abteilung; // Abteilung öffentliche Arbeitnehmereclass () {} public EmployeeClass (String -Name, int ID, Doppelgehalt, String -Abteilung) {this.name = name; this.id = id; this.Salary = Gehalt; this.abpartment = Abteilung; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public int getid () {return id; } public void setId (int id) {this.id = id; } public double getSalary () {Rückgabegehalt; } public void setSalary (Doppelgehalt) {this.Salary = Gehalt; } public String getDepartment () {Rückgabeabteilung; } public void setDepartment (String -Abteilung) {this.Department = Abteilung; } @Override public String toString () {return "peopeeclass [name =" + name + ", id =" + id + ", salary =" + halt + ", departy" + department + "]"; }}Dies ist der Code für die Mitarbeiterklasse, die vier Attribute, Namen, Nummer, Gehalt, Abteilung enthält.
Public Class ManagerClass erweitert die Mitarbeiter von Propive {Private Double SpecialSalary; Publical ManagerClass () {Super ();} public ManagerClass (String -Name, int ID, Doppelgehalt, String -Abteilung, doppelte SpecialSalary) {Super (Name, ID, Gehalt, Abteilung); this.specialSalary = SpecialSalary; } public double getSpecialSalary () {return SpecialSalary; } public void setSpecialSalary (double SpecialSalary) {this.specialSalary = SpecialSalary; } @Override public String toString () {return Super.toString () + "/SpecialSal:" + SpecialSalary; }}Dies ist eine Unterklasse, Managerklasse mit eigenen Attributen, besonderen Zulagen.
2. Die Zugang zu den Mitgliedern der Elternklassen unter Klassen
Eine Unterklasse kann die Mitglieder der übergeordneten Klasse erben, aber der Zugriff auf die Mitglieder der übergeordneten Klasse wird von der Zugriffsfunktion gesteuert.
Die Elternklasse und die Kinderklasse befinden sich im selben Paket: Private kann nicht direkt zugegriffen werden, aber wir können das private Mitglied der Elternklasse durch eine Mitgliedsmethode mit einem öffentlichen Zugriffsattribut erhalten.
Die Elternklasse und die untergeordnete Klasse befinden sich nicht im selben Paket: Private und Standardeinstellungen können nicht direkt zugegriffen werden, aber wir können das private Mitglied der übergeordneten Klasse mit öffentlichen und geschützten Zugriffseigenschaften durch die Mitgliedsmethode erhalten.
3.. Überlastung und Überschreibung von Klassenmitgliedmethoden
Wenn der Name der in der Unterklasse definierten neuen Mitgliedsvariable in der übergeordneten Klasse eine Mitgliedsvariable entspricht, verbirgt die Unterklasse die entsprechende Elementvariable in der übergeordneten Klasse.
Eine Überlastung oder Überschreibung einer Mitgliedsmethode ist eine in einer Unterklasse definierte Mitgliedsmethode, wenn der Name einer in der übergeordneten Klasse definierten Mitgliedsmethode mit dem Namen einer Mitgliedsmethode in der übergeordneten Klasse übereinstimmt.
(1) Überladung von Mitgliedermethoden
In dem zuvor erwähnten Mitarbeiter und Manager Chestnut können wir eine Mitgliedermethode in der Mitarbeiterklasse definieren
public void setInfo (String -Name, int id, doppeltes Gehalt, String -Abteilung) {this.name = new String (Name); this.id = id; this.Salary = Gehalt; this.abartment = new String (Abteilung); }In der Managerklasse kann es definiert werden als:
public void setInfo (String -Name, int ID, Doppelgehalt, Stringabteilung, doppelte SpecialSalary) {Super (Name, ID, Gehalt, Abteilung); this.specialSalary = SpecialSalary; }Dies ist die Überladung von Mitgliedermethoden
(2) Überschreiung der Mitgliedermethoden
Es gibt normalerweise zwei Formen:
① Rufen Sie bei der von der Unterklasse definierten Mitgliedsmethode zunächst die überragende Mitgliedsmethode in der übergeordneten Klasse auf und fügen Sie dann einige Operationsanweisungen hinzu.
② In den von der Unterklasse definierten Mitgliedsmethoden werden die von der übergeordneten Klasse außerordneten Mitgliedermethoden nicht aufgerufen, aber eine Statement -Gruppe wird umschreiben. Dies ermöglicht die vollständige Abdeckung der übergeordneten Klasse. Diese Methode sollte implementiert werden, wenn sich ein Betrieb einer Unterklasse vollständig vom Betrieb des übergeordneten Klassenobjekts unterscheidet.
Kastanie:
In der Objektklasse gibt es eine Mitgliedsmethode gleich (), die feststellt, ob zwei Objekte gleich sind, und ihr Code ist:
public boolean euqals (Objekt obj) {return (this == obj); }Es ist zu erkennen, dass diese Mitgliedsmethode darin besteht, zu vergleichen, ob sich zwei Objekte gleichzeitig auf ein Objekt beziehen.
Wir hoffen jedoch jetzt, eine Funktion zu implementieren, die vergleicht, ob der Inhalt von zwei Objekten desselben Typs gleich ist. So haben wir unten eine Pluralklasse, jede Pluralklasse besteht aus einem realen Teil und einem imaginären Teil. Die Entwurfsfunktion kann vergleichen, ob zwei komplexe Zahlen gleich sind. Der Code ist wie folgt:
öffentliche Klasse ComplexNumber {private double re; privates Doppel -IM; public complexNumber () {re = 0,0; im = 0,0;} public ComplexNumber (double re, double im) {this.re = re; this.im = im; } public double getre () {return re; } public void setre (double re) {this.re = re; } public double getIm () {return im; } public void setim (double im) {this.im = im; } public boolean gleich (Object OtherObject) {if (this == otherObject) return true; if (otherObject == null) return false; if (getClass ()! = otherObject.getClass ()) return false; ComplexNumber Andere = (Komplexnummer) AndereObject; if ((re == other.re) && (im == other.im)) return true; sonst return falsch; } public String toString () {String str = ""; if (re! = 0) str += re; if (im == 0) return str; if (im <0) str += im +"i"; sonst str + = " +" + im + "i"; return str; } public static void main (String [] args) {Komplexnummer C1, C2; c1 = neuer Komplexnummer (2,3); c2 = neuer Komplexnummer (2, -3,4); if (c1.equals (c2)) {System.out.println ("(" +c1 +") == (" +c2 +")"); } else {System.out.println ("(" +c1 +") <> (" +c2 +")"); }}}Das Ergebnis ist (2,0 + 3.0i) <> (2,0-3,4i)
Das obige ist die kurze Diskussion über Javas Hauptverständnis für die Erbschaft, die der Herausgeber Ihnen bringt. Ich hoffe, jeder wird Wulin.com mehr unterstützen ~