méthode ne remplace pas ou implémente une méthode à partir d'un supertype
Je suis entrain de créer un simulacre de base de données des employés à l'aide de l'héritage et le polymorphisme. Je suis en cours d'exécution dans les erreurs suivantes lorsque vous essayez de remplacer les méthodes de la superclasse.
HourlyEmployee is not abstract and does not override abstract method resetWeek() in Employee
public class HourlyEmployee extends Employee
^
HourlyEmployee.java:43: error: method does not override or implement a method from a supertype
@Override
^
HourlyEmployee.java:54: error: method does not override or implement a method from a supertype
@Override
^
HourlyEmployee.java:60: error: method does not override or implement a method from a supertype
@Override
^
HourlyEmployee.java:66: error: method does not override or implement a method from a supertype
@Override
Voici mon super-classe Employé et HourlyEmployee sous-classe code
public abstract class Employee
{
protected String firstName;
protected String lastName;
protected char middleInitial;
protected boolean fulltime;
private char gender;
private int employeeNum;
public Employee (String fn, String ln, char m, char g, int empNum, boolean ft)
{
firstName = fn;
lastName = ln;
middleInitial = m;
gender = g;
employeeNum = empNum;
fulltime = ft;
}
public int getEmployeeNumber()
{
return employeeNum;
}
public void setEmployeeNumber(int empNum)
{
while (empNum <= 10000 && empNum >= 99999)
{
System.out.print ("Invalid input, please try again: ");
}
if (empNum >= 10000 && empNum <= 99999)
{
employeeNum = empNum;
}
}
public String getFirstName()
{
return firstName;
}
public String getLastName()
{
return lastName;
}
public char checkGender(char g)
{
if (g != 'M' || g != 'F')
{
g = 'F';
}
return g;
}
public char getGender()
{
return gender;
}
@Override
public boolean equals(Object e2)
{
if (this.employeeNum == ((Employee)e2).employeeNum)
{
return true;
}
else
{
return false;
}
}
@Override
public String toString()
{
return employeeNum + "\n" + lastName + ", " + firstName + "\n" + "Gender:" + gender + "\n" + "Status:" + fulltime + "\n";
}
public abstract double caclulateWeeklyPay();
public abstract void annualRaise();
public abstract double holidayBonus();
public abstract void resetWeek();
}
Ici est la HourlyEmployee sous-classe
public class HourlyEmployee extends Employee
{
private double wage;
private double hoursWorked;
private double additionalHours;
public HourlyEmployee(String fn, String ln, char m, char g, int empNum, boolean ft, double w, double h, double ahours)
{
super (fn, ln, m, g, empNum, ft);
wage = w;
hoursWorked = h;
hoursWorked = 0.0;
additionalHours = ahours;
}
@Override
public String toString()
{
return this.getEmployeeNumber() + "\n" + lastName + ", " + firstName + middleInitial + "\n" + "Gender: "
+ this.getGender() + "\n" + "Status: " + fulltime + "\n" + "Wage: " + wage + "\n" + "Hours Worked: " + hoursWorked + "\n";
}
//@Override
public double calculateWeeklyPay(double w, double h)
{
if (h > 40)
{
w = w * 2;
}
return w * h;
}
//@Override
public double annualRaise(double w)
{
return (w * .05) + w;
}
//@Override
public double holidayBonus(double w)
{
return w * 40;
}
//@Override
public double resetWeek(double h)
{
h = 0.0;
return h;
}
public double plusHoursWorked(double h, double ahours)
{
while (h <= 0)
{
System.out.println("Invalid value entered, please try again");
}
h += ahours;
return h;
}
}
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Votre classe d'Employés a 4 méthodes abstraites, qui sont mis en œuvre (pas correctement au moins). Voici un exemple:
La classe parent doit contenir la même signature (qui inclut des paramètres), et devrait ressembler à ceci:
Depuis ce qui semble être des devoirs, je vais laisser le reste pour vous.
Viens de lire le message d'erreur attentivement:
Il indique clairement que votre
Employee
classe estabstract
et a une méthode abstraiteresetWeek()
.Votre classe
HourlyEmployee
qui s'étend deEmployee
n'est pas abstrait, il devrait donc remplacer toutes les méthodes abstraites de la classe super, comme d'un béton de classe ne peut pas avoir toutes les méthodes abstraites.La raison en est que vos méthodes dans le
HourlyEmployee
classe ont une signature différente que ceux de la super-classe. Si la méthode n'est pas surchargé, et la@Override
annotation n'est pas accepté par le compilateurque votre HourlyEmployee *classe n'est pas abstrait* vous devez implémenter les méthodes abstraites déclaré dans votre EMPLOYÉ classe abstraite. ce qui est assez évident.
vous avez à mettre en œuvre les méthodes ci-dessous