У меня есть класс с именем Employee
с его 2 private
переменными, а также содержит необходимые конструкторы и другие необходимые методы:
public class Employee {
private String name;
private int id;
public Employee() {
name = " No Name!";
id = 00100;
}
public Employee(String n, int i) {
name = n;
id = i;
}
public Employee(Employee originalObject) {
name = originalObject.name;
id = originalObject.id;
}
public String getName() {
return name;
}
public int getID() {
return id;
}
public void setName(String newName) {
if (newName == null) {
System.out.println("Fatal Error setting employee name!");
System.exit(0);
} else {
name = newName;
}
}
public void setID(int newID) {
id = newID;
}
public String toString() {
return (name + " " + id);
}
public boolean equals(Employee otherEmployee) {
return (name.equals(otherEmployee.name)
&& id == otherEmployee.id);
}
}
Этот класс Employee
расширяет другой класс с именем HourlyEmployee
.Расширенный класс выглядит следующим образом:
public class HourlyEmployee extends Employee {
private double wageRate;
private double hours;
public HourlyEmployee() {
super();
wageRate = 0;
hours = 0;
}
public HourlyEmployee(String na, int di, double wR, double h) {
super(na, di);
if (wR >= 0 || h >= 0) {
wageRate = wR;
hours = h;
} else {
System.out.println("Fatal Error!: creating illegal hourly employee");
}
System.exit(0);
}
public HourlyEmployee(HourlyEmployee originalObject) {
super(originalObject);
wageRate = originalObject.wageRate;
hours = originalObject.hours;
}
public double getRate() {
return wageRate;
}
public double getHours() {
return hours;
}
public double getPay() {
return wageRate * hours;
}
public void setRate(double newWR) {
if (newWR >= 0) {
wageRate = newWR;
} else {
System.out.println("Fatal Error: negative hours worked!");
System.exit(0);
}
}
public String toString() {
return (getName() + " " + getID() + "\n$" + wageRate + " per hour for " + hours + "hours");
}
}
После того, как я закончил кодировать этот класс, я написал демонстрационный класс для тестирования этих классов и того, как он будет работать.
public class InheritanceDemo {
public static void main(String[] args) {
HourlyEmployee joe = new HourlyEmployee("Joe Worker", 281952, 50.50, 160);
System.out.println("joe's longer name is " + joe.getName());
System.out.println("Changing joe's name to joseph.");
joe.setName("Joseph");
System.out.println("joe's record is as follows: ");
System.out.println(joe);
}
}
Наконец, я попытался скомпилировать код, и это сработало, но, к сожалению, демонстрационный класс не запустился, хотя и показал мне, что «процесс завершен» на экране!Что вы думаете не так с этой программой?