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

"super()" no construtor classe filha: o quê e como declarar dentro dele?

Fala galera, beleza ? Preciso de uma ajudinha aqui, por favor! :B Cheguei a uma conclusão, me corrijam se eu estiver errado! Falando de heranças:

Ao usar o extend, a subclasse herda todos os atributos e métodos da classe mãe (exceto os construtores diferentes do padrão - este que o próprio Java interpreta como implícito). Ao fazer uma reutilização de código (nesse caso, herdando um construtor parametrizado da classe mãe), você precisa fazer na classe filha uma referencia chamada de super(algumaCoisa).

A minha dúvida é : Os valores mencionados -dentro do super- se referem exatamente aos mesmos parâmetros do Construtor original da classe mãe (Classe Conta)¹ ? Ou se referem aos parâmetros já declarados no construtor da classe filha (Classe ContaCorrente)² ?

//construtor Classe Conta (mãe)
public Conta(int agencia, int numero) {...     //¹ aqui ?

//construtor Classe ContaCorrente (filha)
public ContaCorrente(int agencia, int numero) {  //² ou aqui ?
super(agencia, numero);
}

Outra dúvida (Abaixo segue o código para melhor explicação) : Se houver 30 atributos dentro do construtor da classe mãe e eu querer herdar todos na classe filha, preciso colocar todos na parametrização do super () ? Há alguma possibilidade de querer herdar só alguns comandos específicos do construtor original, excluindo os outros ?

    //construtor da Classe Mãe

    public Conta(int agencia, int numero) {
        Conta.total++;
        System.out.println("O total de contas é " + total);
        this.agencia = agencia;
        this.numero = numero;
        System.out.println("Estou criando uma conta " + this.numero + this.agencia);
    }

____________________________________________________________________________

//construtor da classe filha

public class ContaCorrente extends Conta {

    public ContaCorrente(int agencia, int numero) {
        super(agencia, numero);
    }

Obrigado desde já! :D :D

3 respostas
solução!

Oi Luis, tudo tranquilo?

Os parâmetros que você vai usar no super para referir-se a classe mãe serão os mesmos parâmetros que foram passados no construtor da classe filha.

Em relação a sua segunda pergunta: sim, quando você usa o super para delegar a responsabilidade para a superclasse, é necessário passar todos os parâmetros. Assim, o construtor da superclasse com a mesma lista de parâmetros que foi passado no super será chamado. Em outras palavras, vai depender se você tem ou não um construtor na superclasse com os mesmos parâmetros que você quer passar no super.

Espero ter ajudado, se a dúvida continuar é só avisar!

Oi Thiago, tudo tranquilo sim, e com você, meu amigo ?

Agradeço a sua resposta, você é muito inteligente!

Que ótimo que você entendeu, Luis! Qualquer coisa estamos à sua disposição! :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software