Skip to content

Commit 72b412d

Browse files
committed
Add warning section on how to think inheritance
Signed-off-by: Jefersson Nathan <[email protected]>
1 parent e143cc5 commit 72b412d

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

4-Intermediário/3-Herança.md

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,35 @@ $filho->apresentar; //Olá, meu nome é Enzo e meu idioma nativo é Português!
4040

4141
Como você pode ver, apesar do Filho herdar as propiedades do Pai, é possível que estas sejam modificadas, como foi feito com a propiedade `nome`.
4242

43+
### Pensando suas classes
44+
45+
A herança em geral, e principalmente a vertical, gera uma relação de razão
46+
onde ambos os termos são convertíveis, pois é uma demarcação de categoria
47+
pelo gênero próximo e pela diferença específica.
48+
49+
No exemplo acima, podemos deixar essa relação mais clara se substituirmos
50+
a palavra-chave `extends` por `é um`.
51+
52+
```
53+
Filho "é um" Pai
54+
```
55+
56+
Essa relação pode ser verdadeira com algumas premissas:
57+
58+
1. Premissa maior: Que o filho seja Pai
59+
2. Premissa menor: Que o filho não seja pai de seu pai
60+
61+
Nenhuma dessas premissas pode ser estritamente respeitada nessa relação se
62+
levarmos em consideração somente a interface:
63+
64+
```php
65+
(function (Pai $o): Filho {
66+
})(new Filho);
67+
```
4368

4469
### Nota
45-
> - No PHP não é possível herdar mais de uma classe, para isso são usadas as interfaces.
70+
> - A herança é comumente desencorajada em favor da composição.
71+
> - No PHP não é possível herdar mais de uma classe, para isso são usadas as classes intermediarias, interfaces ou traits.
4672
> - Você poderá aprender mais sobre a palavra chave `public` no capitulo sobre [modificadores de acesso](4-Modificadores-de-acesso.md).
4773
4874
Ir para: [4.4 Modificares de Acesso](4-Modificadores-de-acesso.md)

0 commit comments

Comments
 (0)