Salutations !
Je m'en viens vers vous car je ne trouve pas de solution à mon petit souci.
J'ai du mal comprendre un aspect de la notion d'héritage en objet et je me heurte à un petit mur que j'espère vous m'aiderez à franchir.
Voici le type de souci que j'ai :
Quoi qu'il advienne si un chat rencontre un autre animal, c'est toujours la fonction Bonjour de la classe Animal qui est appelée et non pas celle qui la remplace dans Chat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 class Animal { public function Mouvement() { // script de mouvement // On rencontre un autre animal pendant le mouvement ? on lui dit bonjour echo $this->Bonjour($animal); } private function Bonjour($animal) { $texte = 'Bonjour '.get_class($animal); return $texte } } class Chat extends Animals { private function Bonjour($animal) { $type = get_class($animal); switch($type) { case 'Chien': $texte = 'Le chat fuit, il a peur du chien'; break; case default: $texte = 'Bonjour '.$type; break; } return $texte } } class Chien extends Animals { }
Où se situe mon erreur ?
Merci d'avance pour votre aide.
Edit :
Je viens de trouver une solution à mon souci à l'instant.
Mais est-ce la bonne méthode ?
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 class Animal { public function Mouvement() { // script de mouvement // On rencontre un autre animal pendant le mouvement ? on lui dit bonjour $class = get_class($animal); echo $class::Bonjour($animal); } public function Bonjour($animal) { $texte = 'Bonjour '.get_class($animal); return $texte } } class Chat extends Animals { public function Bonjour($animal) { $type = get_class($animal); switch($type) { case 'Chien': $texte = 'Le chat fuit, il a peur du chien'; break; case default: $texte = 'Bonjour '.$type; break; } return $texte } } class Chien extends Animals { }
Partager