Surcharger une methode statique en java

Fermé
lonibe Messages postés 5 Date d'inscription dimanche 20 octobre 2013 Statut Membre Dernière intervention 16 mai 2014 - Modifié par lonibe le 19/12/2013 à 02:26
lonibe Messages postés 5 Date d'inscription dimanche 20 octobre 2013 Statut Membre Dernière intervention 16 mai 2014 - 11 janv. 2014 à 18:07
Bonjour tout le monde,

svp est ce qu on peut surcharger une methode statique en java??quels sont proprietes des methodes et attribute static, qu est ce qu on peut faire et ne pas faire AVEC??

Merci d'avance,
A voir également:

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
19 déc. 2013 à 18:49
"est ce qu on peut surcharger une methode statique en java?"

Non, c'est impossible, ça n'aurait d'ailleurs aucun sens.

L'héritage concerne les objets de la classe (this, super), or puisque la méthode est statique elle ne concerne aucun objet, donc l'héritage n'a pas lieu d'être...

De plus une méthode statique est attachée au nom de la classe qui la définit.
Avec ou sans classe fille c'est toujours le nom de la classe mère qui devra être utilisé pour utiliser la méthode. Si tu définis une méthode de même nom dans une classe fille c'est une méthode totalement indépendante, qui ne surcharge rien.

"quels sont proprietes des methodes et attribute static"
Elle se manipule en dehors de toute instance et ne dispose donc d'aucun des attributs associés aux objets (il n'y a pas de this). On se limitera donc à utiliser les paramètres de la méthodes et les membres statiques de la classe.

"qu est ce qu on peut faire et ne pas faire AVEC?"
On peut faire tout ce que l'on veut, il suffirait de passer en argument un objet de la classe pour avoir un comportement similaire à ce que l'on pourrait faire avec this. Cependant le rôle des méthodes statiques est plutôt de fournir des outils qui n'utilisent pas les propriétés internes des objets.

De manière très générale, si une méthode n'utilise aucun des attributs de la classe, alors elle devrait être statique.
1
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 19/12/2013 à 20:57
Qui a parler d'héritage, tu es en train de parler de polymorphisme, et même dans ce cas, c'est possible de surcharger une méthode statique, rejette un oeil sur tes cours.

public class BlaBla {
    public static void uneMethode(int unEntier) {
        System.out.print("Je m'appelle 'Blabla.uneMethode', et je prend un entier.");
    } 

    public static void uneMethode(double unReel) {
        System.out.print("Je m'appelle 'Blabla.uneMethode', et je prend un réel.");
    }
}

// Et on peux également faire

public class Blibli extends Blabla {
    public static void uneMethode(int unEntier) {
        System.out.print("Je m'appelle 'Blibli.uneMethode', et je prend un entier.");
    }
}
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
20 déc. 2013 à 08:02
Mea culpa. Je pensais à la redéfinition (nb. pas au polymorphisme).
Donc effectivement ici on parle de surcharge, donc c'est possible.

En revanche, et même si ce n'était pas la question, je maintiens que la redéfinition n'a pas de sens pour les méthodes statiques, car c'est un concept qui ne s'applique qu'aux objets.
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
20 déc. 2013 à 14:07
Aux dernières nouvelles, la redéfinition de méthodes impliquait le polymorphisme !
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
20 déc. 2013 à 18:57
Le polymorphisme c'est le fait d'utiliser plusieurs classes filles différentes et de regrouper tous les objets sous le même type (celui de la classe mère), cela s'applique à l'intégralité des méthodes de l'objet puisque seules celles de la classe mère sont disponibles.
La redéfinition c'est pouvoir enrichir (ou supprimer) le comportement définit par la classe mère mais en affectant uniquement la méthode redéfini, tout le reste est encore disponible.

Mais on peut très bien faire de la redéfinition sans faire de polymorphisme, de même qu'on peux faire du polymorphisme sans redéfinition (même si du coup l'utilité est restreinte...)

De toute façon, polymorphisme ou redéfinition, dans les deux cas ça s'applique à un objet, donc ça n'a pas de sens pour les méthodes statiques.
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
20 déc. 2013 à 20:09
Je suis d'accord, et donc la méthode qui a été redéfinis devient polymorphe, d'ou le polymorphisme.
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
19 déc. 2013 à 02:06
Salut,

Biensure que oui, pourquoi ne serait ce pas possible !
0