2014-12-07 78 views
-3

我真的可以找到这方面的任何信息..吸气剂和吸附剂是私人还是公用?

应该让吸气剂和二手衣服变得私密还是公开?

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"); 
    } 

} 
+0

请花时间格式正确... – mpromonet 2014-12-07 18:18:54

回答

0

获取和使用获取!并编辑私有成员变量的值。将它们设置为私有不会增加任何价值,因为它们将不能从课堂外访问,并且可以从内部访问而不需要任何设置者和获取者。

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

+1

他们只希望在大多数情况下公开。如果对每个值进行一些检查或使用同步,我可以轻而易举地想象一个私有setter。 – dzidzitop 2014-12-07 18:19:25

+0

同样,根据具体情况,可能需要受保护的getter和setter。当然没有什么要求他们公开。 – 2014-12-07 23:09:08

2

一般来说,它们应该是公开的。如果他们是私人的,他们只能从你的班级中调用,而且,因为你已经可以访问班级中的私人变量,所以是多余的。它们的要点是允许将这些变量访问到其他外部对象。

0

getter和setter方法,因为当你尝试在主类使用它们,如果它们是私有的,你不能使用,所以你不能设置或获取你需要

0

的变量,它取决于必须始终公开你的要求和设计。一般来说,它的吸气和安装人员都是公开的,可以为其他课程提供接口。看看它,在你的班级和建设者,我相信你不想提供外部的课程,所以keepthem私人

现在,为什么要拥有getter和setter,就像你已经在课堂上访问过的私人一样。原因是它更好地访问来自getter & setter的字段,因此,如果您想在未来更新值时使用某些特定验证或逻辑,例如studentNo不应为零。然后你可以在一个地方做到这一点。

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