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 ..
Es gibt immer nur eine Instanz einer statischen Variable. das ist die Definition von statisch. – nhouser9
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
Bitte beschreiben Sie nicht Ihre Klassen, zeigen Sie den Code auf das Minimum reduziert, um Ihre Frage zu kommunizieren (siehe [mcve]) –