0

私は現在、プロジェクトに行き詰まっています。これが私がすべきことです:

  1. Employee.java ファイルを java1_Lesson14 プロジェクトから java1_Project14 プロジェクトにコピーします。まず、カプセル化について学んだことを利用して、データを保護します。

  2. System.out.println() メソッドの呼び出しを使用して、Employee クラスの各インスタンスのすべてのインスタンス変数の名前と値をコンソールに表示します。また、静的変数の値をコンソールに出力します。

  3. インスタンスを介して静的変数にアクセスすると、Eclipse はこれが最適な動作ではないことを警告することに注意してください。静的な情報にアクセスして表示するには、正しいフォームを使用してください。

私はカプセル化の部分を正しくやったと思います。問題は、Eclipse からの警告メッセージです。

「従業員型の静的メソッドsetTopSalary e2.setTopSalary(199000)(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);
    }

}
4

1 に答える 1

1

このstaticキーワードは、クラスのすべてのインスタンスが引き続きフィールドの 1 つのインスタンスを参照することを意味します。そのフィールドは実質的にクラスごとです。

次のように呼び出します。

Employee.setTopSalary(12000);

次の方法でフィールドにアクセスします。

System.out.println(Employee.topSalary);

Employeeクラス名です。

于 2013-07-11T19:08:42.643 に答える