gpt4 book ai didi

java - 为什么 Eclipse 不会@Override?

转载 作者:行者123 更新时间:2023-12-02 04:19:10 32 4
gpt4 key购买 nike

我正在阅读《Java for Dummies》一书,但遇到了问题。我不明白为什么 @Override 不起作用。我确信这与我的代码有关,因为我之前已经获得了一个多态数组来使用覆盖,但它对我来说太简单了,无法模仿。

import static java.lang.System.out;
import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class DoPayrollTypeP {



public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub

Scanner diskScanner = new Scanner(new File("EmpInfoNew.txt"));
Scanner kbdScanner = new Scanner (System.in);

for(int empNum = 1; empNum<=3; empNum++){
payOneFTEmployee (diskScanner);
}
for(int empNum = 4; empNum<=6; empNum++){
payOnePTEmployee(diskScanner, kbdScanner);
}
}
public static void payOneFTEmployee(Scanner diskScanner){

FullTimeEmployee ftemployee = new FullTimeEmployee();
ftemployee.setName(diskScanner.nextLine());
ftemployee.setJobTitle(diskScanner.nextLine());
ftemployee.setWeeklySalary(diskScanner.nextDouble());
ftemployee.setBenefitDeduction(diskScanner.nextDouble());
diskScanner.nextLine();
diskScanner.nextLine();

ftemployee.cutCheck(ftemployee.findPaymentAmount());
out.println();
}

public static void payOnePTEmployee(Scanner diskScanner, Scanner kbdScanner) {
PartTimeEmployee ptemployee = new PartTimeEmployee();
ptemployee.setName(diskScanner.nextLine());
ptemployee.setJobTitle(diskScanner.nextLine());
ptemployee.setHourlyRate(diskScanner.nextDouble());
diskScanner.nextLine();
diskScanner.nextLine(); //Reads the dashed line that
// separates two employees
out.print("Enter ");
out.print(ptemployee.getName());
out.print("'s hours worked this week: ");
int hours = kbdScanner.nextInt();
ptemployee.cutCheck(ptemployee.findPaymentAmount(hours));
out.println();
}
}

下一个类:

import static java.lang.System.out;

public class Employee {
private String name;
private String jobTitle;



public void setName(String nameIn) {
name = nameIn;
}
public String getName() {
return name;
}
public void setJobTitle(String jobTitleIn) {
jobTitle = jobTitleIn;
}
public String getJobTitle() {
return jobTitle;
}

public void cutCheck(double amountPaid){
out.printf("Pay to the order of %s", name);
out.printf("(%s) ***$", jobTitle);
out.printf("%,.2f\n", amountPaid);

}


}

下一个类:

public class PartTimeEmployee extends Employee{

private double hourlyRate;

public void setHourlyRate(double hourlyRateIn) {
hourlyRate = hourlyRateIn;
}
public double getHourlyRate() {
return hourlyRate;
}

public double findPaymentAmount(int hours){
return hourlyRate * hours;
} //method that should be overriden
}

应该覆盖的类:

public class PartTimeWithOver extends PartTimeEmployee{

@Override
public double findPaymentAmount(int hours) {
if(hours <= 40) {
return getHourlyRate() * hours;
} else {
return getHourlyRate() * 40 +
getHourlyRate() * 2 * (hours - 40);
}
}

}

EmpInfoNew.(txt) 文件

乔什莫CEO5000.00

500.00

艾德·什莫队长5000.00

500.00

鲍勃·什莫名誉执行官1000.00

200.00

戴夫·什莫司机

7.25

埃德布拉拉做饭

8.50

伦什莫厨房主管

12.50

最佳答案

您已将对象实例化为

PartTimeEmployee ptemployee = new PartTimeEmployee();

这是一个basePartTimeWithOther所以它不能调用overridden derived中的方法类。

更改为

PartTimeEmployee ptemployee = new PartTimeWithOver();

Here是一个很好的教程,带有图表,解释了多态性

关于java - 为什么 Eclipse 不会@Override?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32980918/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com