Heim Java javaLernprogramm Eine kurze Analyse der Vererbung und Zusammensetzung in Java

Eine kurze Analyse der Vererbung und Zusammensetzung in Java

Jan 21, 2017 pm 04:37 PM

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;
 }
}
Nach dem Login kopieren


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();
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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";
}
Nach dem Login kopieren

Weiter in der Hauptfunktion Deklarieren Sie diesen Schüler

Student student = new Student();
System.out.println(student.getAge());
Nach dem Login kopieren

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");
Nach dem Login kopieren

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();
 }
}
Nach dem Login kopieren

Wir schauen auf die Konsole und drucken aus

i'm temp1
i'm temp2
i'm temp3
Nach dem Login kopieren

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!

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 KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

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)

Verursacht die Sicherheitssoftware des Unternehmens, die die Anwendung nicht ausführt? Wie kann man es beheben und es lösen? Verursacht die Sicherheitssoftware des Unternehmens, die die Anwendung nicht ausführt? Wie kann man es beheben und es lösen? Apr 19, 2025 pm 04:51 PM

Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

Wie vereinfachte ich Probleme mit der Feldzuordnung im Systemdocking mithilfe des Mapstruct? Wie vereinfachte ich Probleme mit der Feldzuordnung im Systemdocking mithilfe des Mapstruct? Apr 19, 2025 pm 06:21 PM

Die Verarbeitung von Feldzuordnungen im Systemdocken stößt häufig auf ein schwieriges Problem bei der Durchführung von Systemdocken: So kartieren Sie die Schnittstellenfelder des Systems und ...

Wie kann ich elegante Entitätsklassenvariablennamen erhalten, um Datenbankabfragebedingungen zu erstellen? Wie kann ich elegante Entitätsklassenvariablennamen erhalten, um Datenbankabfragebedingungen zu erstellen? Apr 19, 2025 pm 11:42 PM

Bei Verwendung von MyBatis-Plus oder anderen ORM-Frameworks für Datenbankvorgänge müssen häufig Abfragebedingungen basierend auf dem Attributnamen der Entitätsklasse erstellt werden. Wenn Sie jedes Mal manuell ...

Wie identifiziert Intellij IDEA die Portnummer eines Spring -Boot -Projekts, ohne ein Protokoll auszugeben? Wie identifiziert Intellij IDEA die Portnummer eines Spring -Boot -Projekts, ohne ein Protokoll auszugeben? Apr 19, 2025 pm 11:45 PM

Beginnen Sie den Frühling mit der Intellijideaultimate -Version ...

Wie konvertiere ich Namen in Zahlen, um die Sortierung zu implementieren und die Konsistenz in Gruppen aufrechtzuerhalten? Wie konvertiere ich Namen in Zahlen, um die Sortierung zu implementieren und die Konsistenz in Gruppen aufrechtzuerhalten? Apr 19, 2025 pm 11:30 PM

Lösungen zum Umwandeln von Namen in Zahlen zur Implementierung der Sortierung in vielen Anwendungsszenarien müssen Benutzer möglicherweise in Gruppen sortieren, insbesondere in einem ...

Wie kann ich Java -Objekte sicher in Arrays umwandeln? Wie kann ich Java -Objekte sicher in Arrays umwandeln? Apr 19, 2025 pm 11:33 PM

Konvertierung von Java-Objekten und -Arrays: Eingehende Diskussion der Risiken und korrekten Methoden zur Konvertierung des Guss-Typs Viele Java-Anfänger werden auf die Umwandlung eines Objekts in ein Array stoßen ...

Wie kann ich elegant den variablen Entitätsklassennamen erstellen, wenn Tkmybatis für Datenbankabfrage verwendet werden? Wie kann ich elegant den variablen Entitätsklassennamen erstellen, wenn Tkmybatis für Datenbankabfrage verwendet werden? Apr 19, 2025 pm 09:51 PM

Wenn Sie TKMybatis für Datenbankabfragen verwenden, ist das Aufbau von Abfragebedingungen ein häufiges Problem. Dieser Artikel wird ...

Warum verursacht das Frühlingsprojekt beim Starten aufgrund von kreisförmigen Abhängigkeiten Zufälligkeitsprobleme? Warum verursacht das Frühlingsprojekt beim Starten aufgrund von kreisförmigen Abhängigkeiten Zufälligkeitsprobleme? Apr 19, 2025 pm 11:21 PM

Verstehen Sie die Zufälligkeit von kreisförmigen Abhängigkeiten beim Start des Frühlingsprojekts. Bei der Entwicklung des Frühlingsprojekts können Sie Zufälligkeit begegnen, die durch kreisförmige Abhängigkeiten beim Projektstart verursacht werden ...

See all articles