2013-07-11 81 views
0

我目前停留在一個項目。這是我應該做的:調用靜態方法/領域

  1. 複製從java1_Lesson14項目的java1_Project14項目Employee.java文件。首先,使用你已經學習的關於封裝的知識來保護你的數據。

  2. 使用對System.out.println()方法的調用,可以在控制檯中顯示每個Employee類實例中所有實例變量的名稱和值。還向控制檯輸出任何靜態變量的值。

  3. 需要注意的是,如果你通過一個實例訪問靜態變量,Eclipse會提醒你,這是不是最佳的行爲。使用正確的表單來訪問和顯示任何靜態信息。

我認爲我做了封裝部分的權利。現在的問題是我從Eclipse獲得的警告消息。

e2.setTopSalary(199000)我收到以下消息:「來自類型Employee的靜態方法setTopSalary(int)應該以靜態方式訪問。」

而就System.out.println("e2 Top Salary is " + e2.topSalary):「靜態字段Employee.topSalary應以靜態方式進行訪問。」

誰能給我一盞燈我怎麼解決這個問題?

public class Employee { 
    private static int topSalary = 195000; 
    private int hoursPerWeek; 
    public static void setTopSalary (int s) { 
     if (s > topSalary) 
      topSalary = s; 
    } 

    public void addMoreHours() { 
     hoursPerWeek++; 
    } 

    public static void main(String[] args) { 
     Employee e1, e2; 
     e1 = new Employee(); 
     e2 = new Employee(); 
     Employee.setTopSalary(199000); 
     e2.setTopSalary(199001); 
     e1.hoursPerWeek = 40; 
     e2.hoursPerWeek = 45; 
     System.out.println("Employee Top Salary is " + Employee.topSalary); 
     System.out.println("e2 Top Salary is " + e2.topSalary); 
     System.out.println("e1 working hours per week are " + e1.hoursPerWeek); 
     System.out.println("e2 working hours per week are " + e2.hoursPerWeek); 
    } 

} 
+0

靜態方法是一流水平,不屬於對象,所以你訪問'ClassName.methodName(PARAMS);' – nachokk

+0

有一個突變,但沒有訪問是咩。 –

回答

1

The static keyword意味着該類的所有實例仍引用到外地的一個實例。該字段實際上是每班。

你把它叫做如下:

Employee.setTopSalary(12000); 

和接入領域是:

System.out.println(Employee.topSalary); 

Employee是類名。

+0

@SotiriosDelimanolis我回答在其範圍內的問題。你應該在OP中指出這一點。 – hexafraction