Herança e Classe Abstrata

3 respostas
poojava
andreanivaldo

Estou estudando para fazer um pequeno projeto acadêmico, que envolva diversos assuntos de POO, como encapsulamento, classe abstrata, herança, polimorfismo, sobrecarga, interface, tratamento de exceções, collections e swing. Estou com uma dúvida na parte de fazer a herança a partir de uma classe abstrata, na hora de criar o construtor na classe filha, tento herdar os atributos da classe mãe com o comando ‘super’, mas dá erro.

Preciso de ajuda para identificar este erro

abstract class Oculos {
        
        private String marca;
        private String modelo;
        private double desconto;
        private double juros;
        private int parcelas;
        private double pagamento;

        public abstract void imprimePagamento(); // imprime o valor final do pagamento
        public abstract void imprimeDadosOculos(); // imprime a marca e o modelo
        
        public Oculos(){
            setMarca(marca);
            setModelo(modelo);
            setDesconto(desconto);
            setJuros(juros);
            setParcelas(parcelas);
            setPagamento(pagamento);
        }
        
        /**
         * @return the marca
         */
        public String getMarca() {
            return marca;
        }

        /**
         * @param marca the marca to set
         */
        public void setMarca(String marca) {
            this.marca = marca;
        }

        /**
         * @return the modelo
         */
        public String getModelo() {
            return modelo;
        }

        /**
         * @param modelo the modelo to set
         */
        public  void setModelo(String modelo) {
            this.modelo = modelo;
        }

        /**
         * @return the desconto
         */
        public double getDesconto() {
            return desconto;
        }

        /**
         * @param desconto the desconto to set
         */
        public void setDesconto(double desconto) {
            this.desconto = desconto;
        }

        /**
         * @return the juros
         */
        public double getJuros() throws ExceptionJuros{
            if(juros < 2.5){
                throw new ExceptionJuros();
            }
            return juros;
        }

        /**
         * @param juros the juros to set
         */
        public void setJuros(double juros) {
            this.juros = juros;
        }

        /**
         * @return the parcelas
         */
        public int getParcelas() throws ExceptionParcelas{ 
            if(parcelas < 0 || parcelas > 12){
                throw new ExceptionParcelas();
            }
            return parcelas;
        }

        /**
         * @param parcelas the parcelas to set
         */
        public void setParcelas(int parcelas) {
            this.parcelas = parcelas;
        }

        /**
         * @return the pagamento
         */
        public double getPagamento() {
            return pagamento;
        }

        /**
         * @param pagamento the pagamento to set
         */
        public void setPagamento(double pagamento) {
            this.pagamento = pagamento;
        }        
        
    }

Segue a classe filha


package projetootica_andreanivaldo;

public class OculosGrau extends Oculos implements PadraoOtica {

    private double grau, precoArmacao, precoGrau;    
    
    public OculosGrau(String marca, String modelo, double desconto, double juros, int parcelas,
            double pagamento, double grau, double precoArmacao, double precoGrau){
        super(marca, modelo, desconto, juros, parcelas, pagamento);
        setGrau(grau);
        setPrecoGrau(precoGrau);
        setPrecoArmacao(precoArmacao);
    }
    
    @Override
    public void imprimePagamento() {
        
    }

    @Override
    public void imprimeDadosOculos() {
        
    }

    /**
     * @return the grau
     */
    public double getGrau() {
        return grau;
    }

    /**
     * @param grau the grau to set
     */
    public void setGrau(double grau) {
        this.grau = grau;
    }

    /**
     * @return the precoArmacao
     */
    public double getPrecoArmacao() {
        return precoArmacao;
    }

    /**
     * @param precoArmacao the precoArmacao to set
     */
    public void setPrecoArmacao(double precoArmacao) {
        this.precoArmacao = precoArmacao;
    }

    /**
     * @return the precoGrau
     */
    public double getPrecoGrau() {
        return precoGrau;
    }

    /**
     * @param precoGrau the precoGrau to set
     */
    public void setPrecoGrau(double precoGrau) {
        this.precoGrau = precoGrau;
    }
    
}

3 Respostas

RaulCrash

O método constructor da classe abstracta não está recebendo parametros. Por isto o erro. Cria um outro constructor ou add os atributos necessarios neste constructor.

andreanivaldo

Caraca! Não creio que me passei nisso :open_mouth: haha

Obrigado!

RaulCrash

Disponha, acontece brow :wink:

Criado 29 de novembro de 2016
Ultima resposta 29 de nov. de 2016
Respostas 3
Participantes 2