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.
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.
Sprache: Java11, JDK13.0.2 Betriebsumgebung: Windows 10
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".
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.
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.
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.
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.
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