2015-03-26 5 views
-2

У меня есть проект, глядя, как это:проекта получили интерфейс ... я думаю, что эта ошибка по netbean

public interface Payable{ 
    double getPaymentAmount(); // calculate payment; no implementation 
} // end interface Payable 

тогда у меня есть абстрактный класс, как это:

public abstract class Employee implements Payable 
    { 
     private String firstName; 
     private String lastName; 
     private String socialSecurityNumber; 
     // three-argument constructor 
     public Employee(String first, String last, String ssn) 
     { 
      firstName = first; 
      lastName = last; 
      socialSecurityNumber = ssn; 
     } // end three-argument Employee constructor 
     // set first name 
     public void setFirstName(String first) 
     { 
      firstName = first; // should validate 
     } // end method setFirstName 
     // return first name 
     public String getFirstName() 
     { 
      return firstName; 
     } // end method getFirstName 
     // set last name 
     public void setLastName(String last) 
     { 
      lastName = last; // should validate 
     } // end method setLastName 
     // return last name 
     public String getLastName() 
     { 
      return lastName; 
     } // end method getLastName 
     // set social security number 
     public void setSocialSecurityNumber(String ssn) 
     { 
      socialSecurityNumber = ssn; // should validate 
     } // end method setSocialSecurityNumber 
     // return social security number 
     public String getSocialSecurityNumber() 
     { 
      return socialSecurityNumber; 
     } // end method getSocialSecurityNumber 
     // return String representation of Employee object 
     @Override 
     public String toString() 
     { 
      return String.format("%s %s\nsocial security number: %s", 
      getFirstName(), getLastName(), getSocialSecurityNumber()); 
     } // end method toString 
// Note: We do not implement Payable method getPaymentAmount here so 
// this class must be declared abstract to avoid a compilation error. 
    } // end abstract class Employee 
` 

и последний общественный класс унаследовать сотрудники, как это:

*public class SalariedEmployee extends Employee* 

и ошибка намека здесь:
"Ошибка: SalariedEmployee не является абстрактным и не отменяет абстрактного метода getPaymentAmount() in Payable public class SalariedEmployee extends Employee"

Я не знаю, откуда это взялось. Этот код взят из книги и должен быть отлично. Я использую netbean 8.0 и jdk 1.7

+4

'«я беру из книги и я знаю, что это абсолютно правильно»' - до тех пор, пока вы изолировали ошибку, ничего не предполагает. Вероятность того, что ошибка в вашем коде. Доверьтесь мне. –

+1

Кроме того, пожалуйста, найдите время, чтобы отложить код, который вы публикуете. Текущий код * действительно * трудно читается. –

ответ

1

Код ошибки говорит все. Вы должны реализовать каждый абстрактный метод с вашего интерфейса Playable. В этом случае вам не нужен метод getPaymentAmount() в вашем классе SalariedEmployee.

EDIT: фиксированный класс

+0

Почти - он должен реализовать это в своем классе SalariedEmployee, а не Employee (если не хочет), поскольку он является абстрактным. –

+0

@HovercraftFullOfEels Спасибо, я исправил его –

1

Вы должны реализовать getPaymentAmount() или в абстрактном классе (Employee) или в SalariedEmployee, потому что они реализуют Payable и этот класс содержит функцию getPaymentAmount()

0

Вы должны реализовать каждый метод, запрошенный интерфейсом (getPaymentAmount()) и определением абстрактного класса.

0

Ok Я установил, что proplem Это только потому, что я не пишу весь код этого файла он он .so пояснит это когда время мы пишем строку

public class SalariedEmployee extends Employee 

подсказка появится только мы пишем все код и добавьте метод

public double getPaymentAmount() 
{ 
return getWeeklySalary(); 
} // end method getPaymentAmount 

к нашей программе, тогда ошибка исчезнет. Я получил благодарность за поддержку. BTW код файл SalariedEmployee.java как этот

public class SalariedEmployee extends Employee 
{ 
private double weeklySalary; 
// four-argument constructor 
public SalariedEmployee(String first, String last, String ssn,double salary) 
{ 
super(first, last, ssn); // pass to Employee constructor 
setWeeklySalary(salary); // validate and store salary 
} // end four-argument SalariedEmployee constructor 
// set salary 
public void setWeeklySalary(double salary) 
{ 
if (salary >= 0.0) weeklySalary = salary; 
else 
throw new IllegalArgumentException(
"Weekly salary must be >= 0.0"); 
} // end method setWeeklySalary 
// return salary 
public double getWeeklySalary() 
{ 
return weeklySalary; 
} // end method getWeeklySalary 

// calculate earnings; implement interface Payable method that was 
// abstract in superclass Employee 
@Override 
public double getPaymentAmount() 
{ 
return getWeeklySalary(); 
} // end method getPaymentAmount 
@Override 
public String toString() 
{ 
return String.format("salaried employee: %s\n%s: $%,.2f", 
super.toString(), "weekly salary", getWeeklySalary()); 
} // end method toString 
} // end class SalariedEmployee