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

Trait não substitui herança certo?

Boa tarde. Cheguei a uma dúvida se eu tenho Trait, para que fazer herança. Porém de acordo com uns testes que fiz, vi que o Trait não substitui a utilização da herança por causa do que o professor explicou: é como se o PHP colasse o código da Trait dentro da classe que a está utilizando. Já a herança eu consigo sobrescrever o método, ou seja, tenho liberdade de usar minha implementação.

Porém como nesse curso foi explicado sobre a palavra final que impede que um método fosse sobrescrito, pensei que nesse caso ao invés de usar herança (para herdar só aquela implementação definida na classe mãe) eu poderia usar Trait, mas iria depender muito.

A questao é, o Trai substitui a utilização de herança ou não?

2 respostas
solução!

Oi Karolina, tudo bem?

Trait substitui a utilização de herança ou não?

Depende do que você quer dizer com a palavra substitui.

As traits e a herança tem propósitos diferentes.

A herança é indicada quando você tem algum tipo de hierarquia, como por exemplo, no clássico exemplo da classe Funcionário, onde posteriormente você pode especializar essa classe em Chefe ou Operário.

Já as traits é uma forma adicionar comportamento a um objeto sem que haja conceitualmente uma hierarquia, a grosso modo é uma forma de composição:

Imagine que você tem duas classes sem relação alguma alguma, como por exemplo: Curso e MaquinaRegistradora. Ambas as classes precisam de alguns métodos para calcular a data de algo... Você não vai criar uma classe chamada Datável e especializar Curso e MaquinaRegistradora (porque dessa forma eu estaria dizendo que há um tipo de relação entre essas classes) e sim criar uma trait chamada Datável e usá-la dentro de Curso e MaquinaRegistradora.

Muitas pessoas usam a herança de maneira errada, então nesse sentido sim, as traits podem substituir o uso da herança. Mas se ambas forem usadas para o seu proposito, as traits não substituem, já que são coisas diferentes.

É meio complicado no inicio, mas com a prática as ideias vão ficando mais claras.

Bons estudos.

Entendi. Obrigada!