Pregunta

Quiero tener la siguiente configuración:

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
}

Es esto posible en java? ¿Cómo? Yo prefiero no utilizar variables de instancia / métodos si puedo evitarlo.

Gracias!

EDIT:

La constante es el nombre de una tabla de base de datos. Cada objeto hijo es un mini ORM.

¿Fue útil?

Solución

que no puede hacerlo exactamente como desee. Tal vez un compromiso aceptable sería:

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

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

Otros consejos

En este caso hay que tener en cuenta es en Java no se puede overried métodos estáticos. Lo que pasa es que de ocultar las cosas.

de acuerdo con el código que has puesto si lo hace lo siguiente respuesta será nula

Parent.ACONSTANT == null ; ==> true

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

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

, siempre y cuando se utiliza como tipo de referencia para padres ACONSTANT será nulo.

te permite hacer algo como esto.

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

La salida será nula.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top