吸引人和制定者是私人还是公共?

时间:2014-12-07 18:07:44

标签: java

我真的可以找到关于此的任何信息..

getter和setter应该私有还是公开?

import java.util.ArrayList;


public class StudentRecords {

  //private strings, ints and doubles
  private String name, subject;
  private int studentNo, level;
  private double avg, total;


  //constructor that sets name, studno...
  public StudentRecords(String name, int studentNo, String subject, int level, ArrayList<Double> grades){

    setName(name);
    setStudentNo(studentNo);
    setSubject(subject);
    setLevel(level);
    setAverage(grades);

  }



  public void setAverage(ArrayList<Double> grades) {

    for(int i = 0; i < grades.size(); i++){
        total += grades.get(i);
        avg = total/level;
    }
  }


  private void setName(String name){

    this.name = name;

  }

  private void setLevel(int level){

    this.level = level;

  }

  //public 
  public void setSubject(String subject){

    this.subject = subject;

  }

  private void setStudentNo(int studentNo){

    this.studentNo = studentNo;

  }


   public String toString() {
    return ("Student Name: "+ this.name +"\nStudent subject: "+this.subject + "\nStudent Number: " + this.studentNo + "\nStudent level: " + this.level + "\nAverage Grade: "+ avg +"\n\n");
   }

}

4 个答案:

答案 0 :(得分:2)

一般来说,它们应该是公开的。如果它们是私有的,则只能在您的类中调用它们,因为您已经可以访问类中的私有变量,所以它们是多余的。它们的关键是允许将这些变量访问到其他外部对象。

答案 1 :(得分:0)

getter和setter总是必须公开,因为当你尝试在主类中使用它们时,如果它们是私有的,你就无法使用,所以你无法设置或获得你需要的变量

答案 2 :(得分:0)

这取决于您的要求和设计。通常,getter和setter是公开的,以提供其他类的访问。在你的班级和建设者看来,我相信你不想提供课外活动,所以 keepthem private

现在,那么为什么要拥有getter和setter,就像你已经在课堂上访问私人一样。理由是它更好地访问getter&amp ;; setter,这样如果你想在将来更新值时放置一些特定的验证或逻辑,就像studentNo不应该为零。然后你可以在一个地方做到。

再次讨价还价,直接访问变量将比使用getter和setter更快,所以如果您确定,将来不会进行某些验证,那么就不要创建getter setter。

答案 3 :(得分:-1)

Getter和Setter用于获取!并编辑私有成员变量的值。将它们设置为私有不会添加任何值,因为它们不能从类外部访问,并且可以从内部访问而根本没有setter和getter。

因此,答案是:他们必须是公共成员。