Les methodes finales

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 févr. 2012, 23:21

tu NE PEUX PAS REDEFINIR UNE METHODE FINALE or c'est ce que fait ton dernier code !!!!

la il serait temps de lire les messages précédent en prenant le temps de bien comprendre ce que l'on dit !

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 226 Messages

23 févr. 2012, 01:06

tu NE PEUX PAS REDEFINIR UNE METHODE FINALE or c'est ce que fait ton dernier code !!!!

la il serait temps de lire les messages précédent en prenant le temps de bien comprendre ce que l'on dit !

@+
vous savez pas expliquez. C'est tout.
Djun, L'inoubliable et l'incontournable

Eléphant du PHP | 179 Messages

23 févr. 2012, 02:17

Rien ne nous oblige à t'expliquer, c'est du bénévolat, et si tu n'es pas content de ce que tu trouves sur ce forum, rien ne te retiens ici :), on ne te blamera pas si tu ne veux pas perdre ton temps avec des explications qui ne te conviennent pas.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 févr. 2012, 06:27

tu NE PEUX PAS REDEFINIR UNE METHODE FINALE or c'est ce que fait ton dernier code !!!!

la il serait temps de lire les messages précédent en prenant le temps de bien comprendre ce que l'on dit !

@+
vous savez pas expliquez. C'est tout.
O_o

Y a une page de forum qui ne fait que ça !!!!!

Y a des moments il faut se résigner........
Ce moment est venu pour moi.........
Il en faut peu pour être heureux ......

Eléphant du PHP | 209 Messages

23 févr. 2012, 11:25

Ouais t'exagères moogli ! :D T'aurais pu le dire que c'était pas possible de redéfinir une méthode finale ! :mrgreen:

Prochaine fois, il faudrait que tu prennes une police un peu plus grosse en gras et en rouge si possible. Limite si tu peux prendre un mois de congés pour donner des cours particuliers à djun ou lui faire son projet, ce serait pas mal. :priere: :lol:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 févr. 2012, 11:26

Limite si tu peux prendre un mois de congés pour donner des cours particuliers à djun ou lui faire son projet, ce serait pas mal. :priere: :lol:
j'ai pas de congé .....
Il en faut peu pour être heureux ......

Eléphant du PHP | 209 Messages

23 févr. 2012, 11:28

Le soir voire la nuit alors :mrgreen:

Eléphant du PHP | 275 Messages

23 févr. 2012, 11:30

Kill it with fire.

Mammouth du PHP | 2278 Messages

23 févr. 2012, 16:53

J'espère ne pas être à côté de la plaque:
parfois un exemple concret illustre bien ces histoires d'héritages.... et je n'ai jamais trouvé mieux que les animaux...
une classe animaux a une fonction:

Code : Tout sélectionner

reproduction
la classe vivipare redéfinit cette fonction :

Code : Tout sélectionner

reproduction d'un petit qui naît vivant
la classe finale ovovivipare comme finale redéfinit cette fonction:

Code : Tout sélectionner

reproduction d'un petit qui sort aussitôt vivant de l'oeuf
la classe couleuvre utilise cette fonction sans pouvoir rien y ajouter. Si les couleuvres sont des ovovivipares d'un genre particulier, il faut enlever le statut de finale à la fonction de reproduction des ovovivipares.
la classe chiens redéfinit la fonction

Code : Tout sélectionner

reproduction de la classe vivipare en la déclarant finale.
Toutes les classes de chiens utilisent cette fonction sans pouvoir rien y changer.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 226 Messages

23 févr. 2012, 22:14

J'espère ne pas être à côté de la plaque:
parfois un exemple concret illustre bien ces histoires d'héritages.... et je n'ai jamais trouvé mieux que les animaux...
une classe animaux a une fonction:

Code : Tout sélectionner

reproduction
la classe vivipare redéfinit cette fonction :

Code : Tout sélectionner

reproduction d'un petit qui naît vivant
la classe finale ovovivipare comme finale redéfinit cette fonction:

Code : Tout sélectionner

reproduction d'un petit qui sort aussitôt vivant de l'oeuf
la classe couleuvre utilise cette fonction sans pouvoir rien y ajouter. Si les couleuvres sont des ovovivipares d'un genre particulier, il faut enlever le statut de finale à la fonction de reproduction des ovovivipares.
la classe chiens redéfinit la fonction

Code : Tout sélectionner

reproduction de la classe vivipare en la déclarant finale.
Toutes les classes de chiens utilisent cette fonction sans pouvoir rien y changer.
*Methode finale*
Djun, L'inoubliable et l'incontournable

Eléphant du PHP | 226 Messages

23 févr. 2012, 22:18

Récapitulons,
Nous allons hors de ce sujet.

J'ai compris en relisant vos explications. Une methode finale permet de pas pouvoir donner cette methode a ces enfants. Si j'ai tord dite-le?
Djun, L'inoubliable et l'incontournable

ViPHP
xTG
ViPHP | 7331 Messages

23 févr. 2012, 22:37

Prenons un autre exemple...

Le père possède une fonction nommée Boite carré.
Le fils hérite de la Boite. Il peut en faire ce qu'il veut, c'est son héritage, il la recolore, la remplace par une boite ronde, ect.

Mais si la fonction Boite carré est une méthode finale ?
Dans ce cas le fils hérite de la Boite mais il ne peut pas la modifier, il ne peut que l'utiliser telle qu'on lui a donné.

Mammouth du PHP | 2278 Messages

23 févr. 2012, 22:41

Une méthode finale ne permet pas de redéfinir cette méthode pour les enfants:
Un ovovivipare a la méthode finale de reproduction reproduction()
Tous ses enfants, s'ils veulent se reproduire par la méthode normale, se servent de cette méthode qu'ils n'ont pas le droit de modifier Rien n'empêche de définir pour les enfants une méthode différente de nom différent, mais elle ne peut pas s'appeler reproduction et on perd l'intérêt de la chose. Ça prouverait que les méthodes ont été mal conçues, car si j'ai besoin de redéfinir une méthode finale, c'est qu'elle n'est pas finale, oeuf corse, comme dirait Bérurier en épongeant sa cravate...
Autre exemple:
Pour un homme et une femme, il existe deux méthode finales mariage_civil(h, f), mariage_religieux(h,f ), et une non finale pacs(h,f).
Tous les hommes et toutes les femmes peuvent se servir de ces méthodes,
Pour les couples monosexuels, ils ne peuvfent ni se servir de mariage_civil, ni de mariage_religieux qui supposent deux sexes différents, ni les redéfinir car elles sont finales.
Ils devraient pouvoir redéfinir pacs() pour l'adapter à leur situation, puisqu'il n'est pas final.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 226 Messages

23 févr. 2012, 22:50

Il faut faire ca

ex:
<?php
class Papa
{
public final function meth
{
return 1 ;
}
}

class enfant extends Papa
{
public final function meth
{
return 1 ;
}
}
?>
Djun, L'inoubliable et l'incontournable

ViPHP
AB
ViPHP | 5818 Messages

23 févr. 2012, 23:13

Il faut faire ca

ex:
<?php
class Papa
{
public final function meth
{
return 1 ;
}
}

class enfant extends Papa
{
public final function meth
{
return 1 ;
}
}
?>
On t'a déjà dit trois mille fois qu'on ne pouvait pas redéfinir une méthode finale héritée. Tu le fais exprès ? T'a testé ton code ? ça donne quoi ? Normalement cela te donnera le message d'erreur suivant Fatal error: Cannot override final method Papa::meth()
Donc ce n'est pas la peine de déclarer une fonction meth() dans ta classe "enfant" qui hérite de "Papa" puisque "Papa" possède déjà cette fonction et qu'il est interdit de la redéfinir à cause précisément du mot "final".

par contre tu peux faire :
class Papa
{
	public final function meth()
	{
		return 1 ;
	}
	
	public function meth2()
	{
		return 2;
	}
}

class enfant extends Papa
{

	public function meth2()
		{
			return 3;
		}
}
$toto = new enfant();
echo $toto->meth();
echo '<br />';
echo $toto->meth2();

/*resultat
1
3
*/