2014-12-07 87 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。