Warum werden Klassenvariablen benötigt? [Java]

Einführung

<! - Java-Version ist 1.8.0_161. Ich habe Sublime Text 3 als Editor verwendet. -> <! - Ich habe gelernt, dass es zwei Arten von Java gibt, Klassenmethoden und Instanzmethoden. -> Als ich gerade Java lernte, "Durch Instanziieren einer Klasse können Sie die Variablen verwenden, über die die Klasse verfügt." Ich denke, dass es oft gelehrt wird.

Wenn Sie jedoch beim Deklarieren einer Variablen statisch schreiben, können Sie diese Variable verwenden, ohne die Klasse zu instanziieren.

In diesem Artikel werde ich Ihnen zeigen, warum einige Variablen ohne Instanziierung verwendet werden können.

Was ist eine Klassenvariable?

Klassenvariablen sind Variablen, die ohne Instanziierung verwendet werden können. Klassenvariablen sind nützlich, wenn Sie eine Variable benötigen, die jedem instanziierten und erstellten Objekt gemeinsam ist. Auch bei Verwendung von Klassenvariablen

(Name der Klasse).(Name der Klassenvariablen)

Wird besorgt. Es fühlt sich an, als wäre es eine Eigenschaft der Klasse.

Andererseits bei Verwendung von Instanzvariablen

(Instanzname).(Name der Instanzvariablen)

Wird besorgt. Es fühlt sich an, als ob es zur Instanz gehört.

Zur Klasse gehörende Variablen

Betrachten Sie beispielsweise die Kreisklasse, die die Fläche eines Kreises berechnet, wenn Sie einen Radius eingeben.

Jedes Mal, wenn Sie einen Radius eingeben, wird ein Objekt vom Typ Kreis erstellt. Jedes Objekt hat einen eigenen Radius als Instanzvariable. Wenn Sie jedoch die Anzahl der erstellten Objekte zählen, ist es hilfreich, Variablen zu haben, die zur Klasse gehören, anstatt Instanzvariablen, die zu jedem Objekt gehören.

Main.java


public class Main{
    public static void main(String args[]){

        for (int i = 0; i < args.length; i++){ //Geben Sie den Radius in das Befehlszeilenargument ein
            double r = Double.parseDouble(args[i]);
            Circle circle = new Circle(r);     //Erstellung eines Objekts vom Typ Kreis
            System.out.println("Area : " + circle.getArea());
        }

        System.out.println("The number of Circle objects : " + Circle.numberOfCircles);

    }
}

Circle.java


public class Circle{

    private double radius; //Kreisradius
    private double area;   //Fläche des Kreises

    public static int numberOfCircles = 0; //Klassenvariable (repräsentiert die Anzahl der Kreisobjekte)

    public Circle(double r){
        radius = r;
        numberOfCircles++; //Wird jedes Mal erhöht, wenn ein Objekt vom Typ Kreis erstellt wird
    }
    
    public double getArea() {	
    	return Math.pow(radius, 2) * 3.14;	
    }
}

Wenn Sie Main.java wie folgt ausführen, ...

java Main 3 4 5 6

Das Ausführungsergebnis ist

Area : 28.26
Area : 50.24
Area : 78.5
Area : 113.04
The number of Circle objects : 4

Es wird sein.

Zusammenfassung

Auf Klassenvariablen kann jedes instanziierte Objekt gemeinsam zugreifen. Ich denke, es ist schwer, in dem oben erwähnten langweiligen Beispiel zu vermitteln. ..

Wir planen, nach Bedarf Korrekturen und Ergänzungen vorzunehmen. 2018/09/09: Es wurde eine Methode hinzugefügt, um den Bereich an die Circle-Klasse zurückzugeben.

<! - In den Oracle The Java TM </ sup> -Tutorials heißt es: Wurde gemacht. Die japanische Übersetzung ist verdächtig, aber bitte vergib mir ...

Wenn mehrere Objekte aus derselben Klasse erstellt werden, hat jedes eine andere Instanzvariable. Bei der Fahrradklasse werden die Geschwindigkeit, mit der das Pedal gedreht wird, der Gang, die Geschwindigkeit usw. als Instanzvariablen aufgeführt. Jedes fahrradförmige Objekt hat seinen eigenen Wert für diese Variablen und wird in einer anderen Speicheradresse gespeichert.

Wenn Sie eine Variable benötigen, die allen Objekten gemeinsam ist, können Sie den statischen Modifikator hinzufügen. Felder, denen beim Deklarieren der statische Modifikator hinzugefügt wurde, werden als statische Felder oder Klassenvariablen bezeichnet. Diese sind eher der Klasse als jedem Objekt zugeordnet. (Unten weggelassen)

Es tut mir leid, aber da es lang zu sein scheint, habe ich nur den Anfang vorgestellt. ->

Recommended Posts

Warum werden Klassenvariablen benötigt? [Java]
Java-Klasse Variable Klassenmethode
Warum Designmuster benötigt werden
[Java Silver] Was sind Klassenvariablen, Instanzvariablen und lokale Variablen?
Java-Array-Variablen sind Referenztypen
Lokale Java-Variablen sind threadsicher
[Java] Unterschiede zwischen Instanzvariablen und Klassenvariablen
Warum nennt Java eine Datei eine Klasse?
Java-Programmierung (statische Klausel und "Klassenvariablen")
[Java] Klassenvererbung
Java-Scanner-Klasse
Java HashMap-Klasse
Java (abstrakte Klasse)
[WIP] Java-Variablen
[Java] Verschachtelte Klasse
Anonyme Java-Klasse
Über die Java-Klasse
[Java] Abstrakte Klasse
[Java] Objektklasse
Lokale Java-Klasse
Wenn Java-Tests Umgebungsvariablen enthalten
Was ich in Java gelernt habe (Teil 2) Was sind Variablen?
Warum Java die letzte Klasse A zulässt {abstrakte Klasse B {}}
Über die Klassenteilung (Java)
Informationen zur Java StringBuilder-Klasse
[Java] Über Singleton Class
Überprüfung der Java-Innenklasse
Feld für den Java-Klassentyp
Java-Programmierung (Klassenmethode)
Informationen zur Java String-Klasse
Warum PreventDefault benötigt wird
Java-Programmierung (Klassenstruktur)
[Java] Variablen- und Typtypen
Über die abstrakte Klasse von Java
Warum die get-Methode in der Calendar-Klasse benötigt wird
Wenn Variablen im Java-Editor von Eclipse nicht mehr hervorgehoben sind
Java Object Serialization warum und wann
[Java] Integer-Wrapper-Klassenreferenz
Java-Memo-Teilzeichenfolge (Standardklasse)
Java-Tipps - Modifikatoren der StataticUtility-Klasse
Java unflexibler String-Klassen-Teilstring
(Hinweis) Java-Klassen / Variablen / Methoden
Länge des Java-Memos (Standardklasse)
Java-Gleichstellungen sind ziemlich unangenehm
Java-Programmierung (Variablen und Daten)
[Implementierung] Java Prozessklassennotizen
Informationen zu Java Class Loader-Typen
Verwendung der Java-Klasse
[Java] Komparator der Collection-Klasse
Definition und Instanziierung von Java-Klassen
[Umgebungsvariablen] Schienen Was sind Umgebungsvariablen?
Java-Lernnotiz (abstrakte Klasse)
Was sind praktisch endgültige Variablen?
Was sind Ruby-Klassenmethoden?
Zusammenfassung der Java Math Klasse
[Java] Was ist Klassenvererbung?
Verwendung von Java-Variablen
Warum eine abstrakte Klasse implementieren (Abstract)
[Java-Grundlagen] Was ist Klasse?
Was sind Java-Metriken? _Memo_20200818