【问题标题】:Private declared but doesn't accept variable私有声明但不接受变量
【发布时间】:2017-03-26 01:53:19
【问题描述】:

我已将我的变量声明为私有变量,并想在类注释上使用注释,如下所示:

public class Etudiant {
    private String nom , prenom ;
         private int anneeNais, LIMITE=60;
         private double note;
         private String code ;

这是它的类:

 public class GroupeEtudiant {

    final int MAX=20;  
 Etudiant[] etudiants = new Etudiant[MAX];
 int nbreEtudiants  ;



 public void ajouterEtudiant(Etudiant unEtudiant){

 etudiants[nbreEtudiants]=unEtudiant;
 nbreEtudiants ++;
}

        public void SetNoter(int i, double uneNote) { 
       etudiants[i].getNote=uneNote;
  }

它说note在Etudiant中有私人访问权限

【问题讨论】:

  • 此类甚至无法编译,因为您的 GroupeEtudiant 引用了一个名为 getNote 的字段,该字段不存在。
  • @MeBigFatGuy 是的,如果你看到 Etudiant 从那里拿走的对象,那很好
  • 我认为您没有正确区分成员和方法。
  • @SteveHarris 我正在学习,老师说要这样做
  • @OusmaneMahyDiaw 做到了

标签: java class get set private


【解决方案1】:

我认为您正在尝试为 SetNoter() 中的方法分配值:

public void SetNoter(int i, double uneNote) { 
    etudiants[i].getNote=uneNote;
}

您应该将uneNote 作为参数传递给它(如果方法public void setNote( double note ) 确实存在):

etudiantes[i].setNote( uneNote );

更新:

要访问 private 成员变量,您应该使用公共方法 (所谓的getter和setter):

public class Etudiant {

    private String nom , prenom ;
        private int anneeNais, LIMITE=60;
        private double note;
        private String code;

    // for reading the variable
    public double getNote() {
        return this.note;
    }

    // for setting the variable
    public void setNote( double uneNote ) {
        this.note = uneNote;
    }

}

然后你可以使用setNote()方法来设置变量,如上所述。

【讨论】:

    【解决方案2】:

    它说note在Etudiant中有私人访问权限

    这是因为 note 是类 Etudiant 的私​​有字段,因此它在类外不可见或不可访问,而是在 Etudiant 内为其创建 gettersetter 方法类。

    注意 - 在您的情况下,您不一定需要 getter,但是当您将字段声明为私有时提供它们是一种很好的做法。

    例子:

    Etudiant 类中,像这样创建一个getNote 字段:

    public double getNote(){
        return this.note;
    }
    

    类中还有一个setNote 字段:

    public void setNote(double note){
        this.note = note;
    }
    

    假设您已完成上述建议,只需替换以下内容:

    public void SetNoter(int i, double uneNote) { 
          etudiants[i].getNote=uneNote;
    }
    

    用这个:

    public void SetNoter(int i, double uneNote) { 
          etudiants[i].setNote(uneNote);
    }
    

    【讨论】:

    • 真的很抱歉,但它不起作用我正在发送代码的谷歌驱动器链接,所以你可以看到:docs.google.com/document/d/…
    • @studentofjava 我提供的解决方案 100% 有效。如果您需要任何进一步的帮助,请随时更新您的帖子,而不是外部链接。
    • @studentofjava 我只需要你用我提供的建议更新 Etudiant 课程,我会从那里看到。
    • 好吧,当我试图在这里发帖时,我按照你的要求做了,但被拒绝了
    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 2013-09-06
    • 1970-01-01
    • 2023-03-27
    • 2017-08-04
    • 2023-04-02
    • 2013-07-15
    • 1970-01-01
    相关资源
    最近更新 更多