Heim  >  Artikel  >  Java  >  Eine kurze Analyse der Vererbung und Zusammensetzung in Java

Eine kurze Analyse der Vererbung und Zusammensetzung in Java

高洛峰
高洛峰Original
2017-01-21 16:37:311245Durchsuche

Vorwort

Java ist eine objektorientierte Sprache. Jeder, der Java studiert hat, weiß, dass Kapselung, Vererbung und Polymorphismus die drei Merkmale der Objektorientierung sind. Jeder wird mehr oder weniger den Eindruck haben, wenn er zum ersten Mal Vererbung lernt: Vererbung kann mir dabei helfen, Klassen wiederzuverwenden. Daher verwenden viele Entwickler natürlich die Klassenvererbung, wenn sie Code wiederverwenden müssen, da er im Buch so geschrieben steht (der Lehrer unterrichtet ihn so). Das ist jedoch tatsächlich falsch. Eine umfangreiche und langfristige Nutzung der Vererbung führt zu hohen Wartungskosten für den Code.

Eigentlich hatte ich noch nie von der Begriffskombination gehört, als ich Java zum ersten Mal lernte, und der Lehrer hat es mir nie erklärt. Ich dachte immer, ich hätte einige Wissenspunkte selbst übersehen. Tatsächlich war es das nicht Fallkombination ist: Definieren wir das Substantiv vorerst als denkendes Ding, aber sie wissen nicht, dass es diesen Namen hat.

Tatsächlich besteht die sogenannte Kombination darin, eine neue Klasse zu erstellen, um die bereits erstellte und debuggte Klasse aufzurufen. Diese neue Klasse kann dann als Kombination bezeichnet werden

Zum Beispiel erstelle ich eine People

public class People {
 private String name;
 private int age;
  
 public void setName(String name){
 this.name = name;
 }
 public String getName(){
 return this.name;
 }
 public int getAge(){
 return this.age;
 }
 public void setAge(int age){
 this.age = age;
 }
}


Dann möchte ich dieser Klasse jetzt einige neue Funktionen hinzufügen Dieses Mal können wir eine neue Klasse erstellen und dann Personenobjekte in dieser Klasse erstellen.

Zum Beispiel erstelle ich jetzt eine Klasse namens Student

class Student {
 People people = new People();
}

Dann kann ich dieser Klasse einige Attribute hinzufügen, wie zum Beispiel die Definition einer Identität als Student, ich werde hier nicht darauf eingehen.

Als nächstes werfen wir einen Blick auf die Vererbung. Tatsächlich haben Vererbung und Kombination denselben Zweck.

In Java gibt es ein Schlüsselwort namens „extends“, das uns beim Erben helfen kann. Die geerbte Klasse wird als übergeordnete Klasse bezeichnet. Sie kann auch als Basisklasse oder Superklasse und als Erbe bezeichnet werden Wir nennen es eine Unterklasse oder eine abgeleitete Klasse usw.

Hier definieren wir eine Klasse

public class Student extends People{
 //doSomething
}

Auf diese Weise erbt die Klasse die übergeordnete Klasse Alle Mitgliedsmethoden und Mitgliedsvariablen der Klasse. Beachten Sie jedoch, dass mit privaten Berechtigungen deklarierte Felder oder Methoden nicht vererbt werden.

Um dies zu beweisen, schreiben wir eine Methode in der Studentenklasse

public String re(){
 return this.name;
}

Hier meldet der Compiler einen Fehler „People.name ist nicht sichtbar.“ " Hier ist ersichtlich, dass als privat deklarierte Felder oder Methoden nicht vererbt werden können. Wenn Sie es erben möchten, können Sie privat in geschützt ändern. In diesem Fall können wir das Namensfeld erfolgreich erben. .

Auf diese Weise initialisieren wir alle Felder in Personen. Fügen Sie einfach diesen Codeblock zum Code hinzu

{
 this.age = 10;
 this.name = "zhangsan";
}

Weiter in der Hauptfunktion Deklarieren Sie diesen Schüler

Student student = new Student();
System.out.println(student.getAge());

Nun stellen wir überrascht fest, dass diese Schreibmethode möglich ist. Obwohl wir in der Unterklasse keine Felder und Methoden deklariert haben, können wir dennoch getAge( ); aufrufen 10 reibungslos ausführen

Dies liegt daran, dass wir keine Methoden in der Unterklasse überladen haben, sodass zu diesem Zeitpunkt getAge der übergeordneten Klasse aufgerufen wird und leicht darauf zugegriffen werden kann. Die privat deklarierten Felder in der Elternklasse.

Nachdem ich dies gelesen habe, glaube ich, dass jeder ein vorläufiges Verständnis der Vererbung hat. Wie werden die Konstruktoren jeder Klasse nacheinander aufgerufen, von der übergeordneten Klasse bis zur untergeordneten Klasse? Klasse.

Während der Demonstration deklariere ich zunächst drei Klassen Temp1, Temp2 und Temp3. Gleichzeitig erbt Temp3 von Temp2 und Temp2 erbt von Temp1 Konstruktor jeder Klasse Fügen Sie eine gedruckte Anweisung ein

//Temp1
System.out.println("i'm temp1");
//Temp2
System.out.println("i'm temp2");
//Temp3
System.out.println("i'm temp3");

Der Einfachheit halber habe ich es nur hier geschrieben, aber jeder muss darauf achten, dass diese in die Konstruktionsmethode jeder Klasse eingefügt werden.

Wir erstellen ein Temp3-Objekt in der Hauptfunktion

public class Mian{
 public static void main(String[] args){
 Temp3 temp3 = new Temp3();
 }
}

Wir schauen auf die Konsole und drucken aus

i'm temp1
i'm temp2
i'm temp3

Daraus ist ersichtlich, dass wir zuerst das temp3-Objekt erstellen, das Schlüsselwort „extends“ finden müssen, dann die Vererbungskette hinaufgehen, temp2 finden und das Schlüsselwort „extends“ finden müssen, dann temp1 finden und dann aufrufen müssen temp1 Konstruktormethode und rufen Sie sie dann einzeln auf.

Zusammenfassung

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels für alle beim Lernen oder bei der Arbeit hilfreich sein kann eine Botschaft zum Mitteilen.

Weitere Artikel zu einer kurzen Analyse der Vererbung und Kombination in Java finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
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