|
4 | 4 |
|
5 | 5 | 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. |
6 | 6 |
|
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. |
8 | 8 |
|
9 | 9 | ```php |
10 | 10 |
|
@@ -33,16 +33,41 @@ Neste exemplo, a classe Filho herda a propiedade `idioma` e o metódo `apresenta |
33 | 33 | $pai = new Pai(); |
34 | 34 | $pai->apresentar(); //Olá, meu nome é João e meu idioma nativo é Português! |
35 | 35 |
|
36 | | -//O filho herda as propiedades do pai |
| 36 | +//O filho herda as propriedades do pai |
37 | 37 | $filho = new Filho(); |
38 | 38 | $filho->apresentar; //Olá, meu nome é Enzo e meu idioma nativo é Português! |
39 | 39 | ``` |
40 | 40 |
|
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`. |
42 | 42 |
|
| 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 | +``` |
43 | 67 |
|
44 | 68 | ### 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. |
46 | 71 | > - Você poderá aprender mais sobre a palavra chave `public` no capitulo sobre [modificadores de acesso](4-Modificadores-de-acesso.md). |
47 | 72 |
|
48 | 73 | Ir para: [4.4 Modificares de Acesso](4-Modificadores-de-acesso.md) |
0 commit comments