IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

comportement de static en cas d'héritage


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut comportement de static en cas d'héritage
    Bonjour à tous,

    je cherche à clarifier comment se comporte un static avec l'héritage... et j'ai une petite envie d'abstract par-dessus le tout.

    Voilà le cas:
    Je veux envoyer des messages d'alarmes -e.g alarme batterie faible, alarme défaut capteur...- ayant certains paramètres en communs comme la date. Donc je crée une classe alarme (abstraite), et des classes filles plus typées.

    Chaque type d'alarme génère un message à partir d'une String, commune pour un même type d'alarme: j'identifie que ce sera une static String

    Chaque type d'alarme a besoin de sa static String, donc çà me parait logique de déclarer cette static String dans la classe mère.

    et là je doute:
    Est-ce qu'il y aura une static String différent pour chaque classe fille ou bien la même pour la classe-mère et les classes-filles?

    un autre doute :
    je veux modifier cet attribut static, et la méthode set correspondant est évidemment la même pour toutes mes classes, donc se déclarerais dans la classe mère, cependant la classe mère ne 'voit' pas les classes-filles ni leurs attributs je pense?

    Un brouillon de code pour illustrer :
    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
     
    abstract public class alarme {
    	static String messageAlarme;
    	protected String dateAlarme;
     
    	public alarme(String date){
    		this.dateAlarme = date;
    	}
     
    	static void setMessageAlarme(String newMessage){
    		messageAlarme = newMessage;
    	}
    }
     
    public class alarmeBatterieFaible extends alarme {
    	private float tension;
     
    	alarmeBatterieFaible(String dateAlarme, float tension){
    		super(dateAlarme);
    		this.tension = tension;
        }
     
    }
     
    public class alarmeDefautCapteur extends alarme {
    	private int capteurId;
    	alarmeDefautCapteur(String dateAlarme, int capteur){
    		super(dateAlarme);
    		this.capteurId = capteur;
        }      
    }
    D'avance merci, pour toute clarification sur le comportement de ces concepts static, et héritage combinés

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    il ne doit pas compiler ton code, une classe abstraite doit avoir une méthode abstraite,
    tu peux avoir un méthode dans la classe fille avec la même signature de la classe mère mais dans ce cas là elle va cacher celle de la classe mère.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Un élément static est le même pour la classe mère et pour ses classes filles.

    Modifier sa valeur dans l'une modifie la valeur dans toutes. À noter que si une classe fille redéfinit un autre élément static de même nom, alors elle utilisera cet autre élément static. L'élément de la classe mère sera accessible via NomDeLaClasseMere.nomDuStatic

    (à noter que les méthodes static ne sont pas pas sujettes au polymorphismes, contrairement aux méthodes non-static. En effet ce qui est static ne se rattache pas à une instance d'objet mais à une classe.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Question sur les jointures en cas d'héritage
    Par Kropernic dans le forum Développement
    Réponses: 4
    Dernier message: 22/10/2012, 15h31
  2. Cas particulier héritage
    Par Kakashi_sensei dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 17/06/2009, 16h23
  3. [D7] [ACCESS] [ADO], requete qui comporte deux cas
    Par iam dans le forum Bases de données
    Réponses: 14
    Dernier message: 10/12/2006, 09h21
  4. Réponses: 10
    Dernier message: 17/08/2006, 18h57
  5. [héritage] héritage d'une variable static
    Par yaya44 dans le forum Langage
    Réponses: 14
    Dernier message: 29/09/2004, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo