Skip to content

Commit f65baca

Browse files
authored
Merge pull request #90 from codelicia/malukenho/inheritance
Add warning section on how to think inheritance
2 parents 057da3d + f4c7c26 commit f65baca

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed

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

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Como já foi dito, a herança é um dos pilares da Progamação Orientada a Objetos. Com ela é possível fazer o reuso de classes que contém atributos e metódos em comum.
66

7-
Vamos usar como exemplo a relação de um pai e um filho e seus idiomas nativos, onde o filho irá herdar as características de seu pai. Naturalmente, o pai sabe falar uma linguagem e eventualmente seu filho também aprenderá ela por meio do convívio.
7+
Vamos usar como exemplo a relação de um pai e um filho, e seus idiomas nativos, onde o filho irá herdar as características de seu pai. Naturalmente, o pai sabe falar uma linguagem e eventualmente seu filho também aprenderá ela por meio do convívio.
88

99
```php
1010

@@ -33,16 +33,41 @@ Neste exemplo, a classe Filho herda a propiedade `idioma` e o metódo `apresenta
3333
$pai = new Pai();
3434
$pai->apresentar(); //Olá, meu nome é João e meu idioma nativo é Português!
3535

36-
//O filho herda as propiedades do pai
36+
//O filho herda as propriedades do pai
3737
$filho = new Filho();
3838
$filho->apresentar; //Olá, meu nome é Enzo e meu idioma nativo é Português!
3939
```
4040

41-
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`.
41+
Como pode ver, apesar do Filho herdar as propriedades do Pai, é possível que estas sejam modificadas, como foi feito com a propiedade `nome`.
4242

43+
### Pensando as 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 do seu pai
60+
61+
Nenhuma dessas premissas pode ser estritamente respeitada nessa relação se
62+
considerarmos somente a interface:
63+
64+
```php
65+
(fn (Pai $o): Filho => $o)(new Filho);
66+
```
4367

4468
### Nota
45-
> - No PHP não é possível herdar mais de uma classe, para isso são usadas as interfaces.
69+
> - Use composição ao invés de herança sempre que possível.
70+
> - No PHP não é possível herdar mais de uma classe, para isso são usadas as classes intermediarias, interfaces ou traits.
4671
> - Você poderá aprender mais sobre a palavra chave `public` no capitulo sobre [modificadores de acesso](4-Modificadores-de-acesso.md).
4772
4873
Ir para: [4.4 Modificares de Acesso](4-Modificadores-de-acesso.md)

0 commit comments

Comments
 (0)