-2

次のようなプロジェクトがあります。

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は抽象的ではなく、Payable public class SalariedEmployee extends Employeeの抽象メソッドgetPaymentAmount()をオーバーライドしません」

これがどこから来たのかわかりません。このコードは本から取ったもので、まったく問題ありません。私はnetbean 8.0とjdk 1.7を使用しています

4

4 に答える 4

1

getPaymentAmount()抽象クラス (Employee) または実装する必要がありますSalariedEmployee。これらは実装されPayableており、このクラスには関数が含まれているためです。getPaymentAmount()

于 2015-03-26T13:07:32.573 に答える
1

エラーコードがすべてを物語っています。Interface からすべての抽象メソッドを実装する必要がありますPlayable。この場合getPaymentAmount()SalariedEmployeeクラスにメソッドがありません。

編集:固定クラス

于 2015-03-26T13:06:41.357 に答える
0

インターフェイス ( getPaymentAmount()) および抽象クラス定義によって要求されたとおりに、各メソッドを実装する必要があります。

于 2015-03-26T13:09:09.950 に答える
0

わかりました私はその問題を修正しましたそれは、私がこのファイルのすべてのコードを書いているわけではないという理由だけです。

public class SalariedEmployee extends Employee

ヒントは、すべてのコードを記述してメソッドを追加するだけで表示されます

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

私たちのプログラムに追加すると、エラーは消えます。サポートに感謝します。ファイル 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
于 2015-03-26T13:23:49.600 に答える