I have a class called Employee with its 2 private variables and also contains its needed constructors and other necessary methods :
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);
}
}
This Employee class extends another class named as HourlyEmployee. The extended class is as follows:
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");
}
}
After I have done coding this class, I wrote the Demo class to test these classes and how it will work.
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);
}
}
Finally, I tried to compile the code and that worked fine, but, unfortunately, the demo class didn't run even though it showed me that " process completed" in the screen! What do you think is wrong with this program ?