Só pra esclarecer... Quando eu for usar composição obrigatoriamente devo implementar a interface ou eu consigo instanciar direto?
Só pra esclarecer... Quando eu for usar composição obrigatoriamente devo implementar a interface ou eu consigo instanciar direto?
Bom dia Bruno!
Não é preciso implementar uma interface para utilizar composição; e não é a maneira correta de fazer (acho que nem é possível).
Para usar Composição você cria uma Classe X e uma Classe Y, um Objeto da Classe X vai utilizar recursos de um Objeto da Classe Y. Não precisa de Interface para fazer isso!
Interface é uma maneira de contornar o problema da inexistência de Herança múltipla.
Composição é quando um Objeto de uma Classe X utiliza recursos de outro Objeto de uma Classe Y. Ou seja, a Composição é uma técnica de reutilização de código sem acoplamento entre Classes. Herança é uma técnica de reutilização de código com acoplamento entre as Classes.
Em Java, uma Classe só pode herdar de uma única SuperClasse. Mas pode ser necessário essa Classe ter comportamentos (Métodos) que não são da natureza da SuperClasse. No Curso, temos o exemplo do Cliente, do Administrador e do Gerente, os 3 são Autenticaveis (Interface), mas só o Administrador e o Gerente são Funcionarios (SuperClasse); ou seja, o Cliente precisa autenticar, mas ele não é um Funcionario. Não é da natureza de todo Funcionario autenticar, para isso, criamos a Interface Autenticavel, que é um "contrato", assinado pelas Classes Cliente, Administrador e Gerente.