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
Ich erinnere mich, dass ich vorher verwirrend über Objekte und Instanzen gesprochen habe, aber ich würde sie gerne noch einmal ansprechen. Bereiten Sie zuerst die "Cat" -Klasse wie gewohnt vor.
Cat.java
class Cat
{
public static int sumCats = 0;
private int age;
private double weight;
public Cat()
{
age = 0;
weight = 0.0;
sumCats++;
System.out.println("Eine neue Katze ist angekommen!");
}
public void setCat(int a,double w)
{
age = a;
weight = w;
System.out.println("Diese Katze ist alt" + age + "Alter, Gewicht" + weight + "Es ist kg.");
}
public static void showSumCats()
{
System.out.println("Jetzt insgesamt" + sumCats + "Es gibt zwei Katzen.");
}
}
Stellen Sie sich den Fall vor, in dem zwei Katzen mit dieser Katzenklasse vorbereitet werden.
Cat
-Klasse.Im obigen Fall verwenden die beiden Katzen die ** Instanzvariable **, bei der es sich um das jedem Objekt zugeordnete Feld handelt, und die ** Instanzmethode **, bei der es sich um die dem Objekt zugeordnete Methode handelt. Haben.
Diese Instanzvariablen und -methoden "werden nach dem Erstellen des Objekts zugänglich ( new
) ".
Missverständnisse hatte ich bisher ・ Objekt ≒ Instanz
⇒ Feldmethode für jedes Objekt = Instanzvariablenmethode * neu !! *
Es gibt jedoch einige Elemente (Feldmethoden), die Sie behandeln möchten, bevor das Objekt erstellt wird. Daher können Mitglieder, die der Klasse selbst zugeordnet sind, als statisch deklariert und verwendet werden.
public static void showSumCats ()
ist
Beziehen Sie sich auf die ** Klassenvariable sumCats
**, die als public static int sumCats = 0;
deklariert ist, und der ** Konstruktor Cat () ** wird jedes Mal aufgerufen, wenn new
ausgeführt wird, und er wird automatisch inkrementiert. Es ist geworden. Dies verknüpft "wie oft Katzenobjekte erstellt wurden" mit "Gesamtzahl der Katzen".
Da "showSumCats ()" statisch "ist, kann diese Methode auch dann aufgerufen werden, wenn" das Cat-Objekt noch nie erstellt wurde ". Daher kann "0 Katzen" angezeigt werden.
** Nur innerhalb der Instanzmethoden ** können this.age
und this.weight
geschrieben werden, um nur die dem Objekt zugeordneten Feldwerte anzugeben.
Die Geschichte der lokalen Variablen wird weggelassen.
Wenn Sie nicht genau verstehen, ob die Variablen / Methoden, die Sie in der Hauptfunktion behandeln werden, klassenbezogen oder objektbezogen sind, gibt es hier eine ganze Reihe von Problemen, die auftreten können.
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)
Recommended Posts