gpt4 book ai didi

java - 将抽象方法从父类(super class)扩展到子类

转载 作者:行者123 更新时间:2023-11-29 04:54:21 26 4
gpt4 key购买 nike

我正在查看一些 oop 考试的旧试卷我即将进行其中一个要求您编写一个系统,其中父类(super class)是抽象的并扩展到 2 个子类

abstract public class Employee {

private String name;
private String id;

public Employee (String name,String id){
this.name = name;
this.id = id;
}

public abstract float calculateMonthlyPay();

public String getName(){
return this.name;
}

public String getID(){
return this.id;
}

@Override
public String toString(){
return getID()+" "+getName()+" "+calculateMonthlyPay();
}
}

父类(super class)Employee中的所有代码都可以,但是论文要求你再扩展一个子类PartTimeEmp,每月的Pay方法是从Float改为Double当执行此 java 时当然会出错,因为它说 double 与 float 不兼容我似乎无法找到一种方法来完成这项工作

public class PartTimeEmp extends Employee {

private double hourlyRate;
private int hoursPerWeek;

public PartTimeEmp(String name, String id) {
super(name, id);
}

@Override
public double calculateMonthlyPay() {
return 0;
}

}

这真的可以实现吗?感谢任何帮助

谢谢,

克里斯

最佳答案

您可以使用 java.lang.Number 作为抽象方法的返回类型。

然后您可以在覆盖方法中返回一个新的 java.lang.Floatjava.lang.Double,因为这些类型扩展了 Number

此技术称为 covariant return type , 并且可能从 Java 5 开始。

这要求您不使用基元(没有层次结构),而是使用它们的 Number 包装器。

请注意,对于与货币相关的精确计算,建议使用 java.math.BigDecimal,而不是 floatdouble s 或它们的包装器 - 至少在方法和类实例的逻辑内部。

关于java - 将抽象方法从父类(super class)扩展到子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34314391/

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