Java ab Anfänger, Vererbung

Nachtrag 2020/3/16 Ich habe es korrigiert, weil ich in den Kommentaren darauf hingewiesen wurde, dass bei der Benennung der Klasse ein Fehler aufgetreten ist.

Einführung

Dieser Artikel ist ein Memorandum. Obwohl es sich um einen Inhalt auf Referenzebene handelt, lautet der in diesem Artikel zu veröffentlichende Code ~~ ** Der Fehler ** ist das Zentrum. Dies dient dazu, den Teil zu veröffentlichen, der beim Codieren tatsächlich falsch war, und ihn zur Selbstreflexion zu veröffentlichen. ~~ Außerdem werde ich hier nicht auf den tiefen Teil eingehen, da ich ihn später überprüfen werde, während ich auch die Fragen zur Java Silver-Prüfung studiere.

Umgebung

Sprache: Java11, JDK13.0.2 Betriebsumgebung: Windows 10

Klassenerweiterung

Alle Klassen, die ich bisher geschrieben habe, wurden unabhängig geschrieben, aber ich musste jedes Mal Mitglieder (Felder und Methoden) festlegen. Wenn es um die "Cat" -Klasse geht, können Sie es schaffen, wenn Sie Ihr Bestes geben, aber es ist nicht realistisch, jedes Mal alle Klassen mit großen Mitgliedern (Feldern und Methoden) zu schreiben. Java verfügt über eine ** Klassenerweiterungsfunktion **, mit der Sie Ihre eigene Klasse erstellen und gleichzeitig die Mitglieder der vorhandenen Klasse erben können.

extendedHousecat


class WildCat
{
  protected double weight;
  protected double height;
  protected String name;

  public static int sumCats = 0;

  public wildCat()
  {
    weight = 0.0;
    height = 0.0;
    sumCats++;
    System.out.println("Nyago, ich habe eine andere Katze gefunden.");
  }
 
  public WildCat(double we,double he)
  {
    weight = we;
    height = he;
    sumCats++;
    System.out.println("Nyago, ich habe eine andere Katze gefunden.");
    System.out.println("Die Katze, die ich gefunden habe, ist das Gewicht" + weight + "kg, Höhe" + height + "Es sieht aus wie cm.");
  }

  public void measureWeightHeight(double w,double h)
  {
    weight = w;
    height = h;

    System.out.println("Ich habe diese Katze gemessen.");
    System.out.println("Gewicht" + weight + "kg, Höhe" + height + "Es gibt cm.");
  }

  public static void countCats()
  {
    System.out.println("Insgesamt" + sumCats + "Ich habe eine Katze gefunden.");
  }
}

//Yamaneko(Wildcat)Basierend auf der Klasse von(Housecat)Lass uns eine Klasse machen.

class HouseCat extends WildCat
{
  private String collorColor;
  private String nickname;

  public void callNickname(String s)
  {
    nickname = s;
    System.out.printlm("Neu bei dieser Katze" + nickname + "Ich habe ihm einen Spitznamen gegeben.");
  }
}

Ich habe die Klasse Yamaneko (WildCat) erweitert, um eine Klasse für Hauskatzen ( HouseCat, Cat ... es gibt verschiedene Namen) zu erstellen. Zu diesem Zeitpunkt haben "Wildcat" und "HouseCat" eine Eltern-Kind-Beziehung und werden zu "Superklasse" bzw. "Unterklasse".

Ist es super oder sub?

Die "HouseCat" -Klasse, die eine Erweiterung der "WildCat" -Klasse ist, erbt die Mitglieder (Felder und Methoden) der übergeordneten "WildCat" -Klasse.

HouseCat cat1 = new HouseCat(); cat1.measureWeightHeight(5.0,50.5);

Auf diese Weise können Sie ein HouseCat-Objekt mit einem Gewicht von 5,0 kg und einer Höhe von 50,5 cm erstellen. Natürlich hat es auch ein collorColor- und ein Spitznamenfeld, Sie können ihm auch einen Spitznamen mit der Methode public void callNickname () geben.

Ich wage es, den übergeordneten Konstruktor zu verwenden

Die "HouseCat" -Klasse hat keinen Konstruktor, aber wenn die "Unterklasse" keinen Konstruktor bereitstellt, wenn der ** argumentlose Konstruktor ** des "Superklasse" -Konstruktors ein "HouseCat" -Objekt erstellt Wird automatisch aufgerufen. Diesmal ist es "public WildCat ()". Wenn Sie es beispielsweise im Konstruktor als "super (8.0,60.8)" bezeichnen, wird es als Hauskatze mit 8,0 kg und 60,8 cm bezeichnet.

Introvertiert als privat, gesellig als privat

Haben Sie bemerkt, dass die Felder in der WildCat-Klasse anders als gewöhnlich sind? (Eigentlich habe ich es nach dem Schreiben bisher behoben). "protected" ist ein Modifikator, der "Zugriff von derselben Klasse oder Unterklassen, die Kinder sind" bedeutet. Wenn Sie erwarten können, eine Superklasse zu werden, die Sie erstellen und entwickeln möchten, ist es später einfacher, sie zu handhaben, wenn Sie sie auf "geschützt" setzen. In Bezug auf Zugangsbeschränkungen verzichten wir auf Verpackungen, werden diese jedoch hier weglassen.

Am Ende

Was muss die geerbte Unterklasse haben, wo dürfen die Mitglieder der Oberklasse zugreifen? Ich leide immer noch unter diesen Problemen, daher ist die aktuelle Situation, dass mein Verständnis hier immer noch schwach ist. Die Java 11-Referenz, mit der ich mich zuvor befasst habe, kam auch mit "Erweiterungen" heraus, die nur durch ein wenig Aussehen durcheinander gebracht wurden. Es gibt. Wenn Sie diesen Stammbaum verstehen, werden Sie wahrscheinlich das echte Java sehen.

Referenz

Ich schreibe und kompiliere Variablen und Ausdrücke so oft wie möglich selbst. Wenn ich sie also vollständig zitieren möchte, werde ich sie beschreiben.

Easy Java 7th Edition Java SE11 Silver Problem Collection (allgemein bekannt als Kuromoto)

Java® Platform, Standard Edition & Java Development Kit API-Spezifikationen der Version 11

Recommended Posts

Java ab Anfänger, Vererbung
Java ab Anfänger überschreiben
Java, Instanz für Anfänger
Java, Überlastungskonstruktor ab Anfänger
Java für Anfänger, Variablen und Typen
Java ab Anfänger, verschachtelt / Pause / Weiter
Java, if-Anweisung / switch-Anweisung ab Anfänger
Java, für Anweisung / while-Anweisung ab Anfänger
Java ab Anfänger, Klassendeklaration / Objekterzeugung
Java-Leben von vorne anfangen
Java Anfänger 4
[Java] Vererbung
Java Anfänger 3
Java-Vererbung
Java Anfänger
Java-Vererbung
Java (Vererbung)
Java, abstrakte Klasse für Anfänger
Java, Schnittstelle für Anfänger
[Java] Klassenvererbung
IntelliJ ab 1
Java ab Anfänger, logischer Operator / bedingter Operator
Übungen für Java-Anfänger
Über Java-Vererbung
Java-Übung "Anfänger"
Für Java-Ingenieure, die ab sofort Kotlin starten
Rufen Sie Java von JRuby aus auf
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
Eval Java-Quelle von Java
Fassen Sie die Java-Vererbung zusammen (Java Silver 8)
Bild-in-Bild ab iOS14
Greifen Sie über Java auf API.AI zu
Informationen zur Vererbung (Java Silver)
Von Java zu Ruby !!
[Java] Implizites Vererbungsprotokoll
Java-Lernnotiz (Vererbung)
[Java] Plattformen zur Auswahl für die Java-Entwicklung ab sofort (2020)
Zusammenfassung der erweiterten Vererbung, Schnittstelle -java
Migration von Cobol nach JAVA
Vererbung der JAVA-Lernverlaufsschnittstelle
Progate Java (Anfänger) Review & Zusammenfassung
Elastic Search Indexerstellung aus Java
Neue Funktionen von Java7 bis Java8
Stellen Sie eine Verbindung von Java zu PostgreSQL her
[Java] Was ist Klassenvererbung?
Java (Vererbung von is-ein Prinzip)
Verwenden von Docker von Java Gradle
Von ineffektivem Java zu effektivem Java
JavaScript von Java aus gesehen
[Anfänger] Java grundlegende "Array" Beschreibung
Führen Sie Nicht-Java-Anweisungen von Java aus
Löse den AtCoder-Anfängerwettbewerb 151 mit Java
Muskel Java Objektorientierter Tag 2 ~ Vererbung ~
Rufen Sie Kotlins versiegelte Klasse von Java aus an
Unterschiede zwischen "Anfänger" Java und Kotlin
Löse den AtCoder Beginner Contest 150 mit Java
Code Java von Emacs mit Eclim
Deep Learning Java von Grund auf 6.4 Regularisierung
Löse den AtCoder-Anfängerwettbewerb 153 mit Java
[Java-Anfänger] Über Abstraktion und Schnittstelle