/*
 * Copyright (c) 1997-2000 Departamento de Informática - UFPE
 */

public class ContaImposto
    extends Conta {

    /**
     * Construtor. Apenas chama o construtor da superclasse
     */
    public ContaImposto (double val, long num) {
      super (val,num); 
    } 
    
    /**
     * Aproveita o m&eacute;todo creditar da superclasse, passando como
     * argumento o valor recebido diminu&iacute;do do imposto.
     */
    public void creditar(double val) {
      super.creditar(val - (val * 0.01));
    }
    /*
        Esta redefinicao vai contra a nocao de subtipo indicada
        pela declaracao "extends", ja que o comportamento da
        operacao "creditar" de "ContaImposto" nao e compativel
        com o comportamento da operacao "creditar" de "Conta".
        Isto e, pode-se distinguir objetos de "Conta" dos objetos 
        de "ContaImposto" apenas usando "creditar" e "imprimirSaldo".

        Redefinicoes devem preservar a semantica (o significado)
        da operacao original; o exemplo acima mostra como nao
        deve-se usar o mecanismo de redefinicao. 
     */
}
