Se a interface Comissao definir esses 4 métodos, todos cargos precisam ter uma implementação para eles, a menos que você use o modificador "default" na interface e criar uma implementação padrão para toda classe que não queira alterar.
Então a intereface ficaria:
public interface Comissao {
default public double calculaComissao(double valor) {return 5;}
default public double teste1(Object a) { return 1; }
default public double teste2(Object b) { return 2; }
public double teste3(Object c);
}
Dessa forma, apenas o método "teste3" será obrigatório ter um método sobrescrevendo, enquanto os outros são apenas opcionais a sobrescrita.
package br.com.bytebank.banco.modelo;
public enum Cargo implements Comissao {
ATENDENTE {
@Override public double calculaComissao(double valor) { return valor * 0.1; }
@Override public double teste1(Object a) { return 0; }
@Override public double teste2(Object b) { return 0; }
@Override public double teste3(Object c) { return 0; }
},
VENDEDOR {
@Override public double calculaComissao(double valor) { return valor * 0.15 + 5; }
@Override public double teste2(Object b) { return 0; }
@Override public double teste3(Object c) { return 0; }
},
GERENTE {
@Override public double calculaComissao(double valor) { return valor * 0.20 + 10; }
@Override public double teste1(Object a) { return 0; }
@Override public double teste3(Object c) { return 0; }
},
AJUDANTE {
@Override public double calculaComissao(double valor) { return valor * 0.08 + 1; }
@Override public double teste3(Object c) { return 0; }
},
RECEPCIONISTA {
@Override public double teste2(Object b) { return 0; }
@Override public double teste3(Object c) { return 0; }
},
DIRETOR {
@Override public double teste3(Object c) { return 0; }
};
}