Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Duvida sobre construtor

Boa noite, gostaria de tirar uma duvida sobre o constructor do Java.

Considerando uma exception caso o nome seja null (como foi feito na aula):

    if(nome == null) {
        throw new NullPointerException("Nome não pode ser null");
    }

Sei que o a classe filha herda o construtor da classe mãe (pelo menos os atributos dele), mas minha duvida é, caso eu declare essa exception na classe mãe e crie uma classe que a extende, essa classe filha irá herdar essa validação? Em outras palavras, preciso repetir essa verificação na classe filha?

Obrigado!

3 respostas

Olá,

Sei que o a classe filha herda o construtor da classe mãe

Construtores não são herdados.

caso eu declare essa exception na classe mãe e crie uma classe que a extende, essa classe filha irá herdar essa validação?

Se entendi, vc gostaria de validar nome no construtor da superclasse e utilizar essa validação na classe filha... Nesse caso, teria que reescrever o construtor, chamando o construtor da superclasse. Algo como...

public Filha(String nome){
    super(nome);
}

[]'s

solução!

Oi Victor,

Se essa sua validação foi escrita no construtor da superclasse, então sim, a validação será aplicada à classe filha, que terá obrigatoriamente que criar ao menos um construtor e fazer a chamada ao contrutor da superclasse através de "super()"

Para ilustrar, veja o exemplo abaixo, onde há a superclasse Funcionario e a classe Diretor, que é filha de Funcionario. O compilador nos obriga a criar ao menos um construtor e a chamar o construtor da superclasse, onde as validações definidas serão executadas.

Espero que isso ajude.. um abraço!

Superclasse Funcionario:

package br.com.alura.heranca;

public class Funcionario {

    private String nome;
    private double salario;

    public Funcionario(String nome, double salario) {
        if(nome == null || salario <=0) {
            throw new IllegalArgumentException("Valores inválidos passados para o construtor de Funcionario!");
        }
    }

    public String getNome() {
        return nome;
    }

    public double getSalario() {
        return salario;
    }

}

Classe filha, Diretor

package br.com.alura.heranca;

public class Diretor extends Funcionario {

    private String outroAtributo;

    public Diretor(String nome, double salario, String outroAtributo) {
        super(nome, salario);
        this.outroAtributo = outroAtributo;
    }

    public String getOutroAtributo() {
        return outroAtributo;
    }

}

Obrigado Alceu, ajudou bastante!!