2015-03-19 2 views
0

Так что я в основном предполагается использовать переменные из моих объектов, созданных из класса Employee ниже:Использование переменных внутри других классов без статического в Java

public class Employee { 

    public long EmployeeNumber; 
    public String EmployeeName; 
    public String LastName; 
    public double HoursWorked; 
    public double HourlyWage; 

    public Employee(long EmployeeNumber, String EmployeeName, String LastName, double HoursWorked, double HourlyWage){ 

     this.EmployeeNumber = EmployeeNumber; 
     this.EmployeeName = EmployeeName; 
     this.LastName = LastName; 
     this.HoursWorked = HoursWorked; 
     this.HourlyWage = HourlyWage; 
    } 


    public double getAnnualGrossSalary(){ // calculates annual gross salary 
     return HoursWorked*HourlyWage*52; 
    } 

Есть объекты, созданные из сотрудников моего основного класса, неоднократный Сотрудник объекты, хранящиеся внутри массива.

Теперь я пытаюсь использовать эти переменные из этих объектов Employee внутри другого класса для расчета налогов.

public double calculateTax() { 

    if (Employee.getAnnualGrossSalary() < 41495){ 
     return Employee.getAnnualGrossSalary()*0.16; 
    } 
    else if (Employee.getAnnualGrossSalary() < 82985){ 
     return Employee.getAnnualGrossSalary()*0.20; 
    } 
    else if(Employee.getAnnualGrossSalary() < 100970){ 
     return Employee.getAnnualGrossSalary()*0.24; 
    } 
    else 
     return Employee.getAnnualGrossSalary()*0.2575; 

} 

У меня есть метод выписанный для этого в другом классе, но когда я пытаюсь использовать их, он продолжает говорить:

Cannot make a static reference to the non-static method getAnnualGrossSalary() from the type Employee.

Как исправить это?

Просто, чтобы уточнить, если я сделаю его статическим, в моей программе ничего не работает, поэтому я не могу сделать его статичным.

ответ

4

Employee - тип класса, это не экземпляр объекта. Если метод getAnnualGrossSalary был статическим, вы можете использовать Employee.

Вы должны попытаться передать экземпляр класса Employee в метод:

public double calculateTax(Employee employee) { 

    if (employee.getAnnualGrossSalary() < 41495){ 
     return employee.getAnnualGrossSalary()*0.16; 
    } 
    else if (employee.getAnnualGrossSalary() < 82985){ 
     return employee.getAnnualGrossSalary()*0.20; 
    } 
    else if(employee.getAnnualGrossSalary() < 100970){ 
     return employee.getAnnualGrossSalary()*0.24; 
    } 
    else 
     return employee.getAnnualGrossSalary()*0.2575; 
} 
Смежные вопросы