抽象类 - 我程序中的一个小故障

时间:2014-02-26 18:58:30

标签: abstract-class

所以我正在尝试编写一个包含3个类的程序(不包括带有该方法的类)。这些是一个工作类,它应该是抽象的,它有一个名称,工资率和一些其他方法,如getname,getsalary和computepay(int hours)。我还有另外两种方法,一种叫做每小时工,另一种叫做工资,是工人的子类,不是抽象的。如果小时数最多为40小时工,那么每小时工的计算工资应该按实际工时数返还小时工资。超过40,超额工资按正常工资的1 1/2支付。 对于受薪工人来说,无论工作多少小时,工资都是40小时。 问题是我的受薪工人工作正常,但对于我的每小时工,某种程度上小时变量已被定义为40或者其他......我不确定是什么问题。你能检查我的程序,看看有什么问题吗?感谢

 abstract class Worker {

String name;
double salaryRate;

public abstract double computePay(int hours);

public abstract String getName();

public abstract double getSalary();
 }

  class HourlyWorker extends Worker {

public HourlyWorker(String workerName, double workersalaryRate) {
    name = workerName;
    salaryRate = workersalaryRate;
}

@Override
public String getName() {
    return name;
}

@Override
public double getSalary() {
    return salaryRate;
}

@Override
public double computePay(int hours) {
    if (hours <= 40) {
        System.out.println(hours);
        System.out.println(salaryRate);
        System.out.println(salaryRate * hours);
        return salaryRate * hours;
    } else{
        System.out.println((salaryRate * 40) + (3 / 2) * (hours - 40) * salaryRate);
        return (salaryRate * 40) + (3 / 2) * (hours - 40) * salaryRate;
    }
}
 }

  class SalariedWorker extends Worker {

public SalariedWorker(String workerName, double workersalaryRate) {
    name = workerName;
    salaryRate = workersalaryRate;
}

@Override
public String getName() {
    return name;
}

@Override
public double getSalary() {
    return salaryRate;
}

@Override
public double computePay(int hours) {
    System.out.println(salaryRate * 40);
    return salaryRate * 40;
}
}

 public class WorkerTester {

public static void main(String[] args) {
    Worker Bob = new HourlyWorker("Bob", 15);
    Worker JohnnyBoy = new SalariedWorker("Johnny", 20);

    Bob.computePay(20);
    JohnnyBoy.computePay(50);
}

}

这应该给300和800 + 3/2 * 10 * 20 = 1100,但它给出300和800.什么错了?

1 个答案:

答案 0 :(得分:0)

我发现了什么是错的......我不小心让鲍勃成了小时工,所以我把它打开了。

〜对不起。