我搜索了网页,但没有找到答案。这是我的问题。 这里的目标是在我的第一个构造函数中使用我的验证(如果codeForme < 0 || codeforme> 9)...等,因为我的另外两个构造函数正在调用第一个构造函数。在另一个构造函数中调用构造函数(并从cons.1中获取修改后的变量)
但是,当我在我的第二个构造函数中输入例如codeforme = 20时,它没有被修改,因为它应该在运行第一个构造函数之后。我知道这个问题可能来自this.codeForme = forme,因为它从我的参数的forme而不是从第一个codeForme开始。 应该有一个简单的方法,谢谢!
这是到目前为止我的代码:
public class carteMere {
// variable(s) de classe s'il y a lieu
private static int identifiant = 0;
// variable(s) d'instance s'il y a lieu
private String marque;
private int codeForme = 0;
private int capaciteMaxMemoire = 8;
private int memoireInstalle = 0;
private int codeCarte;
// constructeur(s) s'il y a lieu
public carteMere(String marque,
int codeForme,
int capaciteMaxMemoire,
int memoireInstalle) {
this.marque = marque;
this.identifiant = identifiant+1;
this.codeCarte=this.identifiant;
if(codeForme < 0 || codeForme > 9){
codeForme = 0;
}
if(capaciteMaxMemoire<=0){
capaciteMaxMemoire = 8;
}
if(memoireInstalle < 0){
memoireInstalle = 0;
}else if (memoireInstalle> capaciteMaxMemoire){
memoireInstalle = capaciteMaxMemoire;
}
codeForme = codeForme;
capaciteMaxMemoire = capaciteMaxMemoire;
memoireInstalle = memoireInstalle;
}
public carteMere(int forme, int capaciteMax, int memoireInstalle){
this("ASUS", forme, capaciteMax, memoireInstalle);
this.codeForme = forme;
this.capaciteMaxMemoire = capaciteMax;
this.memoireInstalle = memoireInstalle;
this.codeCarte=this.identifiant;
}
public carteMere(int codeForme, int memoireInstalle){
this(codeForme, 8, memoireInstalle);
this.codeForme=codeForme;
this.memoireInstalle=memoireInstalle;
this.identifiant = identifiant;
this.codeCarte=this.identifiant;
}
编辑:
如果我做的: carte1 =新carteMere(10,8);
然后我检查carte1,codeForme是10,它应该是0,因为它应该在第一个构造函数中被修改。
有没有办法通过第一个构造函数的验证,当我使用第二个(这个叫第一个)。或者我只是复制粘贴这些if/else? 谢谢 – 2014-12-02 22:47:41
您首先应该与您的命名一致:codeForme和forme用于您的不同构造函数中的相同参数,这有点令人困惑且难以阅读。在设置实例变量时,你也应该总是使用“this”,而不是在第一个构造函数的末尾。也许只是这样,你将能够更好地阅读你的代码,并了解发生了什么 – realUser404 2014-12-02 23:28:34