Question

Je veux avoir la configuration suivante:

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
}

Est-ce possible en java? Comment? Je préfère ne pas utiliser des variables / méthodes exemple, si je peux l'éviter.

Merci!

EDIT:

La constante est le nom d'une table de base de données. Chaque objet enfant est un mini ORM.

Était-ce utile?

La solution

vous ne pouvez pas le faire exactement comme vous le voulez. Peut-être un compromis acceptable serait:

abstract class Parent {
    public abstract String getACONSTANT();
}

class Child extends Parent {
    public static final String ACONSTANT = "some value";
    public String getACONSTANT() { return ACONSTANT; }
}

Autres conseils

Dans ce cas, vous devez vous rappeler est en Java, vous ne pouvez pas overried méthodes statiques. Ce qui est arrivé est-il de cacher les choses.

selon le code que vous avez mis si vous faites les choses suivantes réponse sera nulle

Parent.ACONSTANT == null ; ==> true

Parent p = new Parent(); p.ACONSTANT == null ; ==> true

Parent c = new Child(); c.ACONSTANT == null ; ==> true

tant que vous utilisez Parent comme ACONSTANT type de référence sera nulle.

nous allons vous faire quelque chose comme ça.

 Child c = new Child();
 c.ACONSTANT = "Hi";
 Parent p = c;
 System.out.println(p.ACONSTANT);

sortie sera nulle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top