Zugriff auf Variable in abgeleiteter Klasse

Status
Nicht offen für weitere Antworten.
G

Guvnor

Gast
Hallo!

Ich habe ein kleines Problem und komme einfach nicht auf die Lösung, ich hoffe mal es ist nur eine Kleinigkeit.

Und zwar habe ich eine abstrakte Entity-Klasse, und von dieser abgeleitet eine Player- und eine Shot-Klasse. Entity besitzt einen protected int movingSpeed = 70, und dies wird in einer Methode, die ebenfalls bereits in der Entity vollständig implementiert ist, verwendet.

Nun will ich aber diese Variable in den abgeleiteten Klassen anders definieren, und zwar von Anfang an. Aber wenn ich das mache, wird trotzdem die Variable aus der Oberklasse verwendet, da ja auch die entsprechende Methode aus der Oberklasse aufgerufen wird.

Mir fallen zwei Lösungen ein, die ich aber irgendwie unpraktisch finde:
1) die Methode überschreiben - wäre aber sinnlos, da sie exakt gleich aussehen würde
2) den Wert im Konstruktor setzen

Möglichkeit 2) ist eigentlich gar nicht soo übel, aber irgendwie fände ich es halt hübscher, wenn ich die Variable direkt in der Deklaration mit einem Wert belegen kann. Aber es scheint keinen Zugriffspezifizierer dafür zu geben (z.B. statt protected "override" oder sowas).

Nun also meine Frage - gibt es da eine "javamäßig korrekte" Lösung? Oder muß ich es doch per Konstruktor machen?

Vielen Dank schonmal
Guvnor
 
G

Guest

Gast
Dritte Lösung. In der Basisklasse
Code:
protected abstract int getMovingSpeed();
und diese in der implementierenden Klasse entsprechend überschreiben.

Das mit dem Setzen des Werts im Konstruktor ist aber vollkommen OK. Dazu ist ein Konstruktor ja da.
Insbesondere, da es, wie ich vermute, ein veränderlicher Wert ist, wäre es etwas fehl am Platz, den
gleichen Code immer wieder zu schreiben.
 
G

Guvnor

Gast
@ Gast: Die Variable ist zwar in den meisten Fällen statisch, aber ich habs jetzt trotzdem mit der Konstruktor-Lösung gemacht - irgendwie sieht das schon logisch aus. Aber danke für die Idee noch mit der get-Methode, vielleicht brauch ich das ja in der Form dann auch mal.

@ Wildcard: Ja, das geht schon - aber in diesem Fall nicht, weil die Methode, die die Variable ausliest, in meinem Fall NUR in der Basisklasse Entity implementiert ist. Somit wird, auch wenn ich player.dieMethode() aufrufe, die Variable aus Entity benutzt, weil ja nicht die Methode vom Player aufgerufen wird (gibt es ja so nicht), sondern die von Entity.
 
S

SlaterB

Gast
andersrum und natürlicher wäre eine Operation setMovingSpeed() in der Oberklasse,
warum sollte sich der Wert 70 nicht ändern dürfen?
natürlich wäre auch getMovingSpeed() und eine private statt protected Variable in diesem Fall angebracht, um die Kontrolle und Übersicht zu erhalten
 

Wildcard

Top Contributor
Guvnor hat gesagt.:
@ Wildcard: Ja, das geht schon - aber in diesem Fall nicht, weil die Methode, die die Variable ausliest, in meinem Fall NUR in der Basisklasse Entity implementiert ist. Somit wird, auch wenn ich player.dieMethode() aufrufe, die Variable aus Entity benutzt, weil ja nicht die Methode vom Player aufgerufen wird (gibt es ja so nicht), sondern die von Entity.
Die Variable gehört nicht nur Entity, sondern auch der Player Klasse, deshalb kannst du sie ändern wie, wo, und wann immer du willst.
 
G

Guvnor

Gast
Okay, stimmt, das geht schon. Aber ich kann die Variable in der Klasse Player nicht von Anfang an auf einen Wert setzen.

Also quasi folgendermaßen:

Code:
public class Entity
{
  protected int movingSpeed = 70;
}


public class Player extends Entity
{
  protected int movingSpeed = 120;
}

Wenn ich das mache, wird trotzdem der Wert aus der Klasse Entity genommen. Aber im Programmverlauf kann ich den Wert dann natürlich schon ändern. Daher geht es ja auch, wenn ich den Wert im Konstruktor ändere.

@ SlaterB: in meinem speziellen Fall ändert sich der Wert überhaupt nicht ;) daher wäre es mir recht, wenn er anfangs sofort gesetzt wäre. Aber wie gesagt, ich hab jetzt die Konstruktor-Lösung genommen, die klappt hervorragend.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Innere Klasse: Zugriff auf äußere Variable Allgemeine Java-Themen 5
M Zugriff auf Objekt, Name in Variable Allgemeine Java-Themen 3
H Zugriff auf statische Variable synchronisieren Allgemeine Java-Themen 4
F Zugriff auf Variable im Thread? Allgemeine Java-Themen 3
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
W Klassen Zugriff auf ein Textfile aus allen Klassen. Allgemeine Java-Themen 2
izoards Zugriff auf gemeinsame Ressource (CSV-File) Allgemeine Java-Themen 3
S Java Zugriff auf Netzwerklaufwerk Allgemeine Java-Themen 1
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
O Zugriff auf mySQL ohne JDBC Allgemeine Java-Themen 3
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
B Maven Zugriff auf files aus einem kompilierten jar Allgemeine Java-Themen 15
S Zugriff auf jUnit Test Suite Runner-Instanzen innerhalb von Test Classes Allgemeine Java-Themen 7
W Zugriff auf Objektvariablen vs. Übergabe Allgemeine Java-Themen 3
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
Tommy Nightmare HTTP Zugriff auf Internetseite im Loginbereich Allgemeine Java-Themen 5
H Zugriff auf PHP Allgemeine Java-Themen 4
B DB-Zugriff einer Webanwendung funktioniert nicht mit Java 7 Allgemeine Java-Themen 2
M WebService - Zugriff auf Webservice Methode über Browser Allgemeine Java-Themen 1
O JNA Zugriff auf Funktion aus DLL Allgemeine Java-Themen 0
O Zugriff auf Windows Zertifikatstore Allgemeine Java-Themen 2
M Kein Zugriff auf microSD Karten Allgemeine Java-Themen 4
T Zugriff auf Datenbank Allgemeine Java-Themen 1
J Zugriff auf IMAP GMail Konto scheitert. Allgemeine Java-Themen 2
P Frontend- Zugriff auf WS- Backend Allgemeine Java-Themen 0
U Zugriff auf Datei sperren Allgemeine Java-Themen 5
N Best Practice Semi-Synchronized Zugriff Allgemeine Java-Themen 0
C Zugriff auf Event felder Allgemeine Java-Themen 0
M Threads synchroner Zugriff (add/delete/read) auf eine Liste Allgemeine Java-Themen 6
F Zugriff Verweigert bei Kopieroperation? Allgemeine Java-Themen 4
T JNI: kein Zugriff auf VM in Callback-Methode eines Windows-Hooks Allgemeine Java-Themen 3
S Dynamischer Zugriff Allgemeine Java-Themen 4
Minonos Einem Programm Zugriff auf bestimmte Ordner geben Allgemeine Java-Themen 5
E Zugriff auf Dateien im Filesystem überwachen Allgemeine Java-Themen 5
H Programierstil: static - Zugriff vs. Staticzugriff Allgemeine Java-Themen 24
V Zugriff auf den Objekterzeuger? Allgemeine Java-Themen 4
M Zugriff zweier Threads auf diesselbe Methode Allgemeine Java-Themen 16
B Zugriff auf eine HashMap Allgemeine Java-Themen 4
B JApplet Zugriff auf Local Storage des Browser? Allgemeine Java-Themen 2
D Zugriff auf Array-Liste Allgemeine Java-Themen 19
M gleichzeitiger Zugriff auf eine Textdatei Allgemeine Java-Themen 6
D Eclipse Kein Zugriff auf Inhalt einer referenzierten .jar Allgemeine Java-Themen 5
B synchronisierter zugriff auf Objekt Allgemeine Java-Themen 6
nutellastulle Zugriff, Übergabe, Bearbeitung und Ausgabe von Jlist Allgemeine Java-Themen 6
U Große Liste von Strings mit indiziertem Zugriff Allgemeine Java-Themen 31
J XML Element Zugriff Allgemeine Java-Themen 4
P Daten kopieren mit nio - Zugriff verweigert Allgemeine Java-Themen 8
M Klassen Zugriff auf getMethode ohne Klasse zu erzeugen Allgemeine Java-Themen 6
A Input/Output Applet-Zugriff auf PHP-Schnittstelle (externer Server) Allgemeine Java-Themen 22
H Vererbung Abgeleitete Klassen und Zugriff Allgemeine Java-Themen 2
C Probleme mit dem Zugriff auf private Methode per reflection Allgemeine Java-Themen 2
J Zugriff auf Poker-Client Fenster Allgemeine Java-Themen 14
C Zugriff auf private Methode per reflection geht nicht mehr Allgemeine Java-Themen 3
S Zugriff auf innere Klasse Allgemeine Java-Themen 3
D Kein Zugriff auf WebService ausser localhost Allgemeine Java-Themen 4
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
J Zugriff auf Dateien auf einem shared Folder? Allgemeine Java-Themen 3
H Zugriff auf VBA in Java Allgemeine Java-Themen 2
Haave Audio Device Unavailable: Kein gleichzeitiger Zugriff auf Soundsystem möglich Allgemeine Java-Themen 7
G Letzter Zugriff auf Datei Allgemeine Java-Themen 5
C java.io.FileNotFoundException: (Zugriff verweigert) Allgemeine Java-Themen 14
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
C Webstart: Zugriff auf lokale Dateien? Allgemeine Java-Themen 2
X Zugriff auf ComboBoxen in Hauptklasse von zweiter Klasse aus Allgemeine Java-Themen 8
J Zugriff auf gemeinsame Funktionen Allgemeine Java-Themen 4
Airwolf89 Zugriff auf ArrayList<ArrayList> Allgemeine Java-Themen 3
Airwolf89 Zugriff auf Werte in ArrayList<ArrayList> Allgemeine Java-Themen 4
T Zugriff zwischen Klassen für repaint Allgemeine Java-Themen 7
N Zugriff auf eine Referenzvar. Allgemeine Java-Themen 3
S Zugriff auf Klasse Allgemeine Java-Themen 4
Meldanor Mehrdimensionale Arrays : Zugriff auf n-tes Array Allgemeine Java-Themen 5
E JNA:Zugriff auf Common-Block von Fortran bzw. Struct in C Allgemeine Java-Themen 2
T Zugriff auf Singleton verkürzen - Namespaces?? Allgemeine Java-Themen 20
L Zugriff auf ein Objekt mit mehreren Threads Allgemeine Java-Themen 11
Airwolf89 dynamischer Zugriff auf Variablen/ Objekte Allgemeine Java-Themen 4
S Zugriff auf einzelne Bildpunkte Allgemeine Java-Themen 3
D Referenzen weiterreichen vs. statischer Zugriff Allgemeine Java-Themen 3
V Zugriff auf Default-Package? Allgemeine Java-Themen 6
P RegeEx-Problem: Zugriff auf group Allgemeine Java-Themen 2
M Zugriff auf Parallel-Schnittstelle Allgemeine Java-Themen 2
B Zugriff mit einem Applet auf den Datenträger Allgemeine Java-Themen 11
I Zugriff auf Daten Allgemeine Java-Themen 5
T Zugriff per Reflection o.ä. möglich? Allgemeine Java-Themen 18
D Zugriff auf Windows Dienste Allgemeine Java-Themen 7
G Zugriff auf Memberclasses einer geladenen Class-Datei Allgemeine Java-Themen 2
I Gleichzeitiger zugriff auf ein Long über Threads Allgemeine Java-Themen 2
P Wieso HashMap-Zugriff mit Object, statt mit MyObject? Allgemeine Java-Themen 12
J Kein Zugriff auf Klassen im Default Package Allgemeine Java-Themen 8
M Paralleler Zugriff auf statische Methode Allgemeine Java-Themen 5
S Zugriff auf unterschiedliche JREs Allgemeine Java-Themen 7
M "Unzulässiger Zugriff auf einen Speicherbereich" Allgemeine Java-Themen 7
A Zugriff auf Parallelport nur über Eclipse nicht über .jar ! Allgemeine Java-Themen 12
G Zugriff auf ein sama share Allgemeine Java-Themen 8
J Java zugriff auf Exchange Server Allgemeine Java-Themen 10
D eclipse: Zugriff auf Ordner per code Allgemeine Java-Themen 4
O Konkurrierender Zugriff auf Log-Datei mit Log4J Allgemeine Java-Themen 11
Caracasa [Threads] Gleichzeitiger Zugriff auf eine LinkedList Allgemeine Java-Themen 9
L Zugriff auf Objekt das sich in einer Liste befindet Allgemeine Java-Themen 2
J Zugriff auf den Namen einer Variablen Allgemeine Java-Themen 7

Ähnliche Java Themen


Oben