- chris_c a écrit:
- Dans mon code, plus haut, ma sous-classe surcharge la methode, Eclipse me l'indique mais compile, je dois ajouter @override, le raccourci clavier c'est quoi ?
Est-ce que implements sert a surcharger une méthode d'une sous-classe native ?
Non,
implements sert à surcharger des classes
interfaceEn fait 'implements', est une commande batarde.
Faisons un peu d'histoire :
dans d'anciens langages Objets, on pouvait mettre plusieurs 'extends'.
Reprenons l'exemple de 'Voiture', elle hérite de "Vehicule" : OK.
Mais ta Voiture a un propriétaire. Pour un notaire, elle sera traité comme un 'bien-meuble'.
=> Donc elle sera classée avec des chaises, les lits, les tableaux...
=> Donc la voiture devrait aussi hériter de 'BienMeuble'
!!! C'EST IMPOSSIBLE !!! En java, un objet ne peut hériter que d'un parent et un seul !!!
Donc, les auteurs de Java ont eut l'idée de créer un héritage 'batard' : "implements".
Avec une règle impérative pour 'implements' : la classe parent doit être '
vide' ! ce n'est pas une
classe, c'est une
interface (tu écris 'interface' à la place de 'classe')
Exemple :
interface BienMeuble{
static final long VALEUR_MAX = 1000000;
static final String DESCRIPTION = "Ceci est aussi un bien meuble";
public long calculerValeur();
}_______________________________________________________________
Qu'est-ce qu'une interface ?C'est un classe très très limitée.
Il existe 2 type d'informations dans une interface :
1 - Les
prototype-de-fonction (il n'y a que le nom et les paramètres, le script entre accolade est absent)Tu remarque que
public long calculerValeur(); ne possède pas d'accolade pour écrire le script de cette fonction.
Elle à 2 rôles :
a - permettre aux
BienMeubles d'accepter cette fonction.
Exemple :
BienMeuble bien = new Voiture();
long valeur = bien.calculerValeur();
=> Si tu n'avais pas défini la fonction dans l'interface, le java ne connaitrait pas 'calculerValeur()' => BUG
b - forcer les héritier à écrire un script pour cette fonction.
Dans notre exemple,
Voiture devra impérativement comporter la fonction "
calculerValeur(){...}" AVEC le script entre accolade.
2 - les
Constantes Voir ci-dessous, ce qu'est une constante.____________________________________________________
Que sont les constantes ?Les "constantes" sont des valeurs traduite en mot, dans ton script. Dans le script tu ne peux pas
modifier la valeur d'une constante.
Mais, mais, mais, dans le code final, java remplace tous tes mots par la valeur indiquée.
Exemple :
static final long VALEUR_MAX = 1000000;
si dans une ligne tu écris : long val = BienMeuble.VALEUR_MAX; => java compilera par : long val = 1000000;
=>=> BienMeuble.VALEUR_MAX disparaitra purement et simplement.
void myFunction(){
BienMeuble.VALEUR_MAX = 200000;
}
=> INTERDIT !!! Il est impossible de modifier la valeur d'une 'constante'A quoi servent les CONSTANTES :1 - à rendre ton script plus clair
2 - si tu veux modifier la 'valeur_max', il te suffit de changer une seule ligne de ton code (sinon, il faut aller rechercher toutes les lignes où tu utilise VALEUR_MAX'
En résumé : les constantes servent à te simplifier la vie (mais Java n'en à rien à faire!)
____________________________________________________
Cette explication décris 4 nouveaux mots :
constante : mot qui sera remplacé par sa valeur lors de la compilation.
il est interdit de modifier cette valeur dans le script
(hormis dans la déclaration : CONSTANTE=valeur; INTERDIT !!!)prototype : description d'une fonction, mais sans les instructions (il n'y a pas d'accolades après la fonction)
interface : une classe qui ne contient que des
constantes et des
prototypes de fonction
implements : indique qu'une classe hérite d'une ou plusieurs
interface(
s)
Phildes