2
respostas

Duvida entre Composição e Herança

Sempre confundo um pouco Composição com Herança, no caso de herança a classe gerente utiliza os atributos de funcionários, complementando com características exclusivas da classe gerente. E na composição, uma classe tem como requisito primeiro, ser da classe que a compoe.

Está certo o que entendi das duas?

2 respostas

Olá Edvaldo,

Em herança, a classe Gerente herda todas as características e comportamento da classe Funcionario. Podemos dizer que Gerente é um Funcionario.

Na herança há duas vertentes: A reutilização de código, usando o 'extends' isso pelo que eu entendi se chama composição com java. Já o polimorfismo acontece quando uma classe extende de outra ou também qundo uma classe implementa uma interface.

Olá Edvaldo,

HERANÇA / COMPOSIÇÃO

A herança se dá estendendo atributos e métodos de uma classe. Vamos aos exemplos:

Temos uma classe mãe que se chama Conta e criamos nessa classe alguns atributos e métodos que serão herdados por todas as classes filhas.

public class Conta {

    //Os atributos dessa calsse são: saldo, agencia, numero, titular e total

    private double saldo;
    private int agencia;
    private int numero;
    private Cliente titular;
    private static int total;

    // Os métodos dessa classe são: deposita, saca e transfere

    public void deposita(double valor) {
        this.saldo = this.saldo + valor;
    }

    public boolean saca(double valor) {
        if (this.saldo >= valor) {
            this.saldo = this.saldo - valor;
            return true;
        } else {
            System.out.println("Valor insuficiente");
            return false;
        }
    }

    public boolean transfere(double valor, Conta destino) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
            destino.deposita(valor);
            return true;
        } else {
            return false;
        }
    }

}

Vamos criar uma classe filha de nome Cliente que herda a classe Conta

public class Cliente  extends Conta{

    private String nome;
    private String cpf;
    private String profissao;

}

COMPOSIÇÃO

Na composição temos uma instância da classe existente sendo usada como componente da outra classe.

Exemplo de composição:

public class TesteComposicao {

    public static void main(String[] args) {

        // edvaldo é a instancia  ou composição da classe cliente    

        Cliente  edvaldo = new Cliente();

        edvaldo.deposita(100);
        System.out.println(edvaldo.getSaldo());

}

Abraço