[英]Calling static methods/fields
我目前停留在一個項目上。 這是我應該做的:
將Employee.java文件從java1_Lesson14項目復制到java1_Project14項目。 首先,使用您學到的關於封裝的知識來保護數據。
使用對System.out.println()方法的調用在控制台中顯示Employee類的每個實例中所有實例變量的名稱和值。 還將所有靜態變量的值輸出到控制台。
請注意,如果您通過實例訪問靜態變量,則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);
}
}
static
關鍵字表示該類的所有實例仍引用該字段的一個實例。 該字段實際上是按班級分配的。
您將其稱為如下:
Employee.setTopSalary(12000);
並通過以下方式訪問字段:
System.out.println(Employee.topSalary);
Employee
是班級名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.