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.

War es hilfreich?

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
scroll top