Ich arbeite an einem Programm / Spiel, wo ich statische Dienstklasse mit Params habe.
%Vor%Dann muss ich diese Werte in bestimmten Fällen überschreiben, z. B. wenn ich auf einer Karte mit begrenzter Punktzahl spiele. Also habe ich folgendes getan:
%Vor%Und die beabsichtigte Verwendung folgt:
%Vor%Ich habe diesen Code nicht wirklich getestet, weil sich IDE darüber beschwert, ob ein statisches Feld durch eine Instanz aufgerufen wird und auch über das Verstecken von Feldern. Ich sehe deutlich, dass dieser Code stinkt, also gibt es eine Möglichkeit, dies zu erreichen, oder muss ich jede Param-Klasse separat schreiben?
PS: Ich weiß, ich sollte die Standardklasse abstrakt machen und getters verwenden, ich bin nur neugierig, ob es einen Weg gibt, die Werte statisch zugänglich zu machen.
Sie können statische Member nicht überschreiben - in Java können weder Methoden noch Felder überschrieben werden. In diesem Fall sieht es jedoch so aus, als müssten Sie nichts tun: Da Sie in der Variable ParamsGeneral
eine Instanz von par
haben, würde eine nicht statische Methode das tun, was Sie für die reguläre Überschreibung benötigen.
Ich würde keine Unterklassen für ein allgemeines Spiel gegen ein begrenztes Spiel verwenden. Ich würde eine Aufzählung verwenden, wie:
%Vor%Wenn Sie ein Spiel erstellen, können Sie Folgendes tun:
%Vor%Und so weiter.
Auf diese Weise können Sie die Art Ihres Spiels ändern und gleichzeitig Ihre Werte zentralisieren. Stellen Sie sich vor, Sie müssten für jede Art von Parameter eine neue Klasse erstellen. Es könnte sehr kompliziert werden, du könntest Hunderte von Klassen haben!
Habe MAX_SCORE
private static mit öffentlichen statischen Gettern; dann kannst du ParamsGeneral.getMaxScore
und ParamsLimited.getMaxScore
aufrufen und du erhältst 1000 bzw. 500
Tags und Links java inheritance static