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 :
D'avance merci, pour toute clarification sur le comportement de ces concepts static, et héritage combinés
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; } }
Partager