Inherit eine statische Variable in Java
-
29-09-2019 - |
Frage
Ich möchte folgendes Setup haben:
abstract class Parent {
public static String ACONSTANT; // I'd use abstract here if it was allowed
// Other stuff follows
}
class Child extends Parent {
public static String ACONSTANT = "some value";
// etc
}
Ist das möglich in Java? Wie? Ich möchte lieber nicht Instanzvariablen / Methoden verwenden, wenn ich es vermeiden kann.
Danke!
EDIT:
Die Konstante ist der Name einer Datenbanktabelle. Jedes Kind Objekt ist eine Mini-ORM.
Lösung
Sie können es nicht genau das tun, was Sie wollen. Vielleicht ein akzeptabler Kompromiss wäre:
abstract class Parent {
public abstract String getACONSTANT();
}
class Child extends Parent {
public static final String ACONSTANT = "some value";
public String getACONSTANT() { return ACONSTANT; }
}
Andere Tipps
In diesem Fall Sie sich erinnern müssen, ist in Java nicht statische Methoden overried können. Was passiert ist, ist es das Fell das Zeug.
nach dem Code, den Sie setzen, wenn Sie die folgenden Dinge tun Antwort sein wird null
Parent.ACONSTANT == null ; ==> true
Parent p = new Parent(); p.ACONSTANT == null ; ==> true
Parent c = new Child(); c.ACONSTANT == null ; ==> true
solange Sie Parent als Referenztyp konstanten verwenden null sein.
Die können Sie etwas tun.
Child c = new Child();
c.ACONSTANT = "Hi";
Parent p = c;
System.out.println(p.ACONSTANT);
Ausgabe null sein wird.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow