Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Esclarecendo mais o funcionamento do "(super)" no construtor

public ContaCorrente (int agencia, int numero) { super(agencia, numero); } ` Prezados, Boa tarde! No exercício seguinte à essa aula do Nico, ficou claro para mim o seguinte:

"Quando uma classe herda de outra, ela recebe apenas seus métodos e atributos, não existe herança de construtores".

Essa é uma dúvida que ainda não consegui esclarecer. Se não há herança, qual a relação existente entre o super(agencia, numero) ? É como se chamássemos um "método" ? Podem exemplificar ou explicar de outra forma? Desculpe, mas não compreendi.

1 resposta
solução!

Opa, blz?

Cara, você deve chamar o construtor da super classe na classe filha. É esse o ponto ..

Quando você cria um objeto de uma classe filha, você pode acessar os métodos da super classe diretamente, exemplo:

public class Funcionario {
    //atributos omitidos
    Funcionario(String nome, int idade){
        this.nome = nome;
        this.idade = idade; 
    }
    //getters e setters omitidos.
}

public class Gerente extends Funcionario{
    //atributos omitidos
    //getters e setters omitidos

    public double getBonificacao(){
        return salario * 0.2;
    }
}


public class Teste{
    public static void main(String[] args) {
        Gerente g = new Gerente();
        g.setNome("João");  //acessa o método herdado
        g.setIdade(35);
    }
}

Na classe Teste não é possível fazer com que a classe Gerente use o construtor de Funcionario por meio de herança. É necessário chamá-lo na classe Gerente, dessa forma por exemplo:

public class Gerente extends Funcionario{
    //atributos omitidos

    Gerente(String nome, int idade){
        super(nome, idade);  //chamando o construtor da super classe (classe pai)
    }
    //getters e setters omitidos

    public double getBonificacao(){
        return salario * 0.2;
    }
}

Assim será possível criar um objeto Gerente dessa forma:

public class Teste{
    public static void main(String[] args) {
        Gerente g = new Gerente("João", 35);
    }
}

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