usage du mot clé super et accès aux variables privées
Bonjour,
J'ai crée une classe CompteBancaire qui possède la variable privée solde et J'ai crée sa classe fille CompteBancaireAvecDecouvert qui a accès au constructeur de la classe mère CompteBancaire et qui par ce biais initilaise la variable privée solde.
Dans la classe CompteBancaire, j'ai défini la méthode retrait,qui diminue le montant du solde du montant du retrait, mais dans la classe fille je veux la redéfinir pour expliquer la notion de redéfinition d'une méthode.
Cependant, du fait que la variable "solde" est privée, je ne peux pas accéder à cette variable depuis la classe fille CompteBancaireAvecDecouvert, pour modifier sa valeur via la méthode retrait redéfinie.
Comment puis je faire pour corriger cela ?
Par ailleurs,je voulais avoir la cionfirmation que l'on ne peut pas trouver l'expression super.super en java.
Je vous remercie beaucoup de votre aide.
Cordialement.
Nathalie
accès à des variables privées
Je vous remercie de vos réponses qui toutes conviennent.
J'ai choisi d'expérimenter celle proposée par CyberChouan , c'est à dire de déclarer la vairalbe solde variable privée et de créer un accesseur protected.
Il y a cependant ce bug que j'aimerais arranger
Pour cela ,je vous montre le code des deux classes comptebancaire et comptebancaireavecdecouvert
Code:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
public class CompteBancaire{
private String nomProprietaire ;
private char[]numero_compte ;
private double solde ;
//protected double solde;
public CompteBancaire(){} // fin de premier constructeur
public CompteBancaire(String proprio, char[]num, double montant){
this.nomProprietaire=proprio ;
this. numero_compte = num ;
this.solde= montant ;
}// fin de deuxième constructeur
//Création dun getter pour récupérer le contenu de la variable privée solde
protected double getSoldeCourant(){
return this.solde ;
}
// création d'une méthode depot pour ajouter un montant au solde courant
public void depot(double montant){
this.solde += montant;
}
// création d'une méthode pour enregistrer un retrait d'argent,
//c'est à dire une diminution du solde courant,à condition que ce solde le permette
public void retrait(double montant) throws ProvisionInsuffisanteErreur{
System.out.println("appel du retrait sur compte simple ");
if (this.solde < montant){ throw new ProvisionInsuffisanteErreur() ;
}// fin de if
else {this.solde-=montant;}
}// fin de méthode retrait
public void virement(CompteBancaire cb, double montant)throws ProvisionInsuffisanteErreur {
cb.retrait(montant);
this.depot(montant);
}// fin de méthode virement
}// fin de classe CompteBancaire |
a présent la classe comptebancaireavecdecouvert
Code:
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 32 33 34 35 36 37 38 39 40 41 42
|
public class CompteBancaireAvecDecouvert extends CompteBancaire{
private double decouvertMax;
// création du constructeur de la classe CompteBancaireavecDecouvert
public CompteBancaireAvecDecouvert(String proprio, char[]num, double montant, double decouvertMaximum){
super(proprio, num, montant);// l'opérateur super mermet d'accéder depuis la classe fille aux
//attributs et méthodes non privées de la classe mère
this.decouvertMax=decouvertMaximum;
}// fin du constructeur de la classe CompteBancaireAvecDecouvert
// création d'un setter pour modifier le montant du decouvert maximum du compte courant
public void setDecouvertMaximal(double montant){
this.decouvertMax= montant;
}
public void retrait (double montant) throws ProvisionInsuffisanteErreur{
System.out.println(" appel du retrait sur compte avec decouvert ") ;
if (this.getSoldeCourant() + this.decouvertMax< montant){
throw new ProvisionInsuffisanteErreur() ;
}// fin de if
else {
this.getSoldeCourant()-=montant;//j'ai ici un message d'erreur qui me dit ceci "the left hand side of an assignement must be a variable-ce que je comprends bien mais comment arranger cela si ce n'est en declarant la variable solde protected
}
}// fin de méthode retrait
}// fin de classe CompteBancaireAvecDecouvert |
Meci beaucoup à vous de votre aide.
Par ailleurs, pouvez vous me dire quelle est la différence entre les classes int et Integer, de même qu'entre les classes boolean et Boolean et entre les classes Character et char.
Je vous remercie beaucoup de votre aide.
Cordialement.
Nathalie