2017-02-17 3 views
-4

Einige Kontext: Ich habe eine zwei verschiedene Klassen (Client und ClientAuth), die beide die gleiche abstrakte Klasse erweitern, NetworkingAbstract (ich nenne es NA). Diese letzte Klasse verfügt über drei verschiedene geschützte statische Klassenvariablen mit den folgenden Typen: ein Socket, ein InputStream und ein OutputStream.Java-Vererbung, zwei Unterklassen derselben Klasse

Ich erstellen ein neues ClientAuth-Objekt innerhalb der Client-Klasse. Das ClientAuth-Objekt ruft eine Methode auf, die die NetworkingAbstract-Klassenvariablen InputStream und OutputStream initialisiert. Wenn die Methode dann zurückkehrt, wenn ich auf diese Variablen (innerhalb der Client-Klasse) zugreife, haben sie dieselben Werte, die ihnen im ClientAuth-Objekt zugewiesen wurden!

Das passt eigentlich zu meinen Bedürfnissen, aber ich verstehe nicht, warum das passiert!

Sollten diese Klassenvariablen (OutputStream und InputStream) nicht unabhängig zwischen Client und ClientAuth sein, obwohl sie beide dieselbe Klasse erweitern? Oder teilen sie beide die gleiche Klasse, weil sie die Werte teilen?

Ich hoffe, dass ich genug, um meine Frage klar gemacht ..

+3

Es gibt immer nur eine Instanz einer statischen Variable. das ist die Definition von statisch. – nhouser9

+0

statische Variablen werden von allen Instanzen der Klasse und ihrer Unterklassen gemeinsam genutzt. Es gibt im Grunde keine Vererbung oder Überschreibung von statischen Variablen, sie sind nicht wie 'Klassenvariablen', die Sie von anderen Sprachen gewohnt sind. – pvg

+2

Bitte beschreiben Sie nicht Ihre Klassen, zeigen Sie den Code auf das Minimum reduziert, um Ihre Frage zu kommunizieren (siehe [mcve]) –

Antwort

2

Diese letzte Klasse verfügt über drei verschiedene geschützte statische Klassenvariablen mit den folgenden Typen: ein Sockel, ein Inputstream und ein Outputstream.

Eine statische Variable ist eine, die einer Klasse zugeordnet ist, nicht einzelne Objekte dieser Klasse.

Sie müssen keine statischen Variablen verwenden, wenn sie für jedes Objekt eindeutig sein sollen.

0

Statische Eigenschaften für Klassen werden von allen Instanzen gemeinsam verwendet. Aus diesem Grund werden diese Eigenschaften alle Klasseneigenschaften genannt.

Lesen Sie diese java-static-methods-variables-static.

Verwandte Themen