¿Cómo extender la clase enum de la clase abstracta?

Tener algo como esto:

public enum Token
{
     FOO("foo", "f"),
     QUIT("quit", "q"),
     UNKNOWN("", "");
     ...

     public parse(String s) {
         for (Token token : values()) {
              ...
              return token;
         }
         return UNKNOWN;
     }
}

Una clase abstracta:

abstract class Base 
{
    private boolean run;

    Base() {
        run = true;

        while (run) {
             inp = getInput();
             act(inp);
        }
    }

    public boolean act(String s) {
        boolean OK = true;
        switch (Token.parse(inp)) { /* Enum */
             case FOO:
                    do_foo();
                    break;
             case QUIT:
                    run = false;
                    break;
             case UNKNOWN:
                    print "Unknown" + inp;
                    OK = false;
                    break;
             }
         }
         return OK;
    }
}

Y el extensor:

class Major extends Base
{

}

Lo que quiero es ampliaract como en sisuper no lo maneja entonces trata de manejarlo enMajor. P.ej. añadirPRINT_STAT("print-statistics", "ps") - pero al mismo tiempo deja que elBase clase maneja valores predeterminados comoQUIT.

¿Es este un enfoque completamente equivocado?

Lo que he hecho hasta ahora es agregar una interfaz Normalmente:

public interface BaseFace
{
      public boolean act_other(String inp);
}

Y en claseBase implements BaseFace:

      case UNKNOWN:
          OK = act_other(inp);

Y en claseMajor:

  public boolean act_other(String inp) { 
       if (inp.equals("blah")) {
            do_blah();
            return true; 
       }
       return false;
  }

¿Esto parece un diseño utilizable?

Y, pregunta importante:

¿Hay alguna buena manera de extender elToken clase tal que puedo usar el mismo enfoque de interruptor enMajor como enBase? Lo que me pregunto es si hay uno mejor diseño y segundo si tengo que crear una nueva clase de token paraMajor o si de alguna manera puedo extender o reutilizar lo existente.

Editar: Punto de concepto es tener elBase Clase que puedo reutilizar fácilmente en diferentes proyectos que manejan varios tipos de entrada.

Respuestas a la pregunta(4)

Su respuesta a la pregunta