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

Presença de construtor nas classes Filhas

Olá, foi dito na aula que os construtores não são herdados pelas Filhas. No entanto eu não entendi uma coisa, por que então, já que não herda construtores, dá erro se eu crio uma classe Filha extendida de uma super Classe que tem um construtor específico? Eles não herdam construtores então ao criar uma Filha já não criaria automaticamente um construtor padrão para ela?

2 respostas
solução!

Oie Flavio, tudo bem contigo?

Depende do que é colocado dentro do construtor, se o construtor da classe pai não fizer inicialização de nenhum atributo a classe filha não precisará usar o super() ou sequer criar um construtor, segue exemplo:

Subclasse:

public class Pai {

    private String nome;

    public Pai() {
        System.out.println("Sou a classe pai");
    }
}

Classe Filha:

public class Filho extends Pai{

}

Classe Teste:

public class Teste {
    public static void main(String[] args) {
        new Filho();
    }
}

Resultado: "Sou a classe pai"

Como podemos observar acima, a subclasse sempre irá chamar o construtor da superclasse, e nesse caso como o construtor da super classe só apresenta um "sysout" e não recebe qualquer parâmetro, a subclasse não possui a necessidade de deixar explicito no construtor dela, sendo desnecessário chamar o método "super()".

Agora segue outro exemplo:

Super classe:

public class Pai {

    private String nome;

    public Pai(String nome) {
        this.nome = nome;
    }    
}

Subclasse:

public class Filho extends Pai{

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

Teste:

public class Teste {
    public static void main(String[] args) {
        new Filho("Eduardo");
    }
}

Como mostrado acima, quando é feito a inicialização de um atributo usando um dado recebido como argumento, é necessário declarar o construtor da subclasse e usar o método "super".

Tem um artigo muito bom que fala sobre esse tema de construtores e com certeza vai te agregar muito, segue o link:

Espero ter ajudado, qualquer outra dúvida é só mandar por aqui que estarei disponível :)

Bons estudos!

Opa, valeu Igor! Valeu pela ajuda. Vi o artigo que me mandou e também ajudou. Valeu! Abraço