2012-10-08 31 views
3

我學習了java,並且在其他類中獲取和設置方法時遇到問題。在另一個類中獲取和設置方法

我的第一堂課被命名爲Department,第二堂命名爲Company。我想設置班級部門的工作人員數量並獲得班級公司的員工數量。

Department類

public class Department { 

    public int staffNumber; 

    public Department() { 
    } 

    public void setStaffNumber(int staff) { 
     this.staffNumber= staff; 
    } 

} 

公司類

public class Company { 

    public Department staffNumber; 

    public Company() { 
    } 

    public Department getStaffNumber() { 
      return Department.staffNumber = Department.staffNumber; 
    } 

} 

能否請你幫我的錯誤信息 - 非靜態變量staffNumber不能從靜態上下文中引用? 謝謝

+0

公衆詮釋getStaffNumber(){ 回報Department.staffNumber =部門使用StaffNumber。staffNumber; } – User404

+0

這段代碼中有許多奇怪的東西。爲什麼你的'Department'類型的成員變量叫'staffNumber'?爲什麼getStaffNumber()方法返回一個'Department'對象? 「職員編號」與部門不一樣,是嗎? – Jesper

回答

3

的問題是在這裏:

return Department.staffNumber = Department.staffNumber; 

編譯器將讀取Department.staffNumber爲:staffNumber是在Department類的靜態變量。有你的問題。

爲了解決這個問題,你應該只返回實例數據:

public Department getStaffNumber() { 
    //<Department attribute in the class> 
    return staffNumber; 
} 

順便說一句,即使你有Department類中的Department.staffNumber靜態屬性,建議行return Department.staffNumber = Department.staffNumber;不會使任何意義。它類似於此:

public class SomeClass { 

    int x; 

    public int getX() { 
     //return x = x; //clumsy 
     return x; //now this might be better 
    } 
} 
+0

你回答了你自己? –

+1

@Perroloco不,我沒有。我只是逐步更新答案。否則我不知道你的意思。 –

+0

@Perroloco Luiggi編輯了這個問題,他沒有問這是否是你的意思。 – Gamb

0
 public Department getStaffNumber() { 
      return Department.staffNumber = Department.staffNumber; 
    } 

Department.staffNumber就像是一個靜態變量訪問。 它應該是return staffNumber

你的getter通常不會初始化。它應該只是返回

如果你想返回部門則應該是return staffNumber

如果你想返回Department.staffNumber應該 回報staffNumber.staffNumber改變返回類型的int ......並解決變量名!

0

您正試圖訪問變量staffNumber,因爲它是static variable

如果你想返回staffNumber,你應該返回staffNumber.staffNumber。儘管您使用的語義不好,但您應該有:

public class Company { 

    public Department m_department; 

    public Company() { 
     m_department=new Department(); 
    } 

    public Department getStaffNumber() { 
      return m_department.staffNumber; 
    } 

} 
0

您似乎對基本概念感到困惑。 執行以下操作

public class Department { 

    public int staffNumber; 

    public Department() { 
    } 

    public void setStaffNumber(int staff) { 
     this.staffNumber= staff; 
    } 

    public int getStaffNumber() { 
     return staffNumber; 
    } 
} 

現在,在您Company

public class Company { 

    public Department dept; 

    public Company() { 
     dept= new Department(); 
    } 

    public int getDepartmentStaffNumber() { 
     return dept.getStaffNumber(); 
    } 

    public void setDepartmentStaffNumber(int staff) { 
     dept.setStaffNumber(staff) 
    } 
} 
+0

您似乎對如何格式化代碼感到困惑。 – maba