簡體   English   中英

調用靜態方法/字段

[英]Calling static methods/fields

我目前停留在一個項目上。 這是我應該做的:

  1. 將Employee.java文件從java1_Lesson14項目復制到java1_Project14項目。 首先,使用您學到的關於封裝的知識來保護數據。

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

}

static關鍵字表示該類的所有實例仍引用該字段的一個實例。 該字段實際上是按班級分配的。

您將其稱為如下:

Employee.setTopSalary(12000);

並通過以下方式訪問字段:

System.out.println(Employee.topSalary);

Employee是班級名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM