我对Java继承相当陌生,我不熟悉';我不明白我为什么会出错?
问题是: 撰写“市场营销人员”课程,与本章中介绍的其他律师事务所课程一起学习。营销人员的收入为50000美元(比普通员工多10000美元),还有一种称为广告的额外方法,该方法打印“立即行动,供应持续!”确保与员工超类进行适当的互动。 迄今为止的守则:我对Java继承相当陌生,我不熟悉';我不明白我为什么会出错?,java,inheritance,Java,Inheritance,问题是: 撰写“市场营销人员”课程,与本章中介绍的其他律师事务所课程一起学习。营销人员的收入为50000美元(比普通员工多10000美元),还有一种称为广告的额外方法,该方法打印“立即行动,供应持续!”确保与员工超类进行适当的互动。 迄今为止的守则: public class Marketer extends Employee { public Marketer() { setBaseSalary(super.getSalary() + 10000.0);
public class Marketer extends Employee {
public Marketer() {
setBaseSalary(super.getSalary() + 10000.0);
}
public void advertise() {
System.out.println("Act now, while supplies last!") ;
}
}
这就是输出应该是什么:
50000.0
75535.0
现在就行动,等补给用完
以下站点上有一个名为Employee.java的文件扩展名,上面的代码如下所示:
到目前为止,除了75535.0之外,它打印出了所有预期结果!
我哪里出错了??
当我运行代码时,它这样说(对于我在75535.0部件上收到的错误):
(将基本工资改为65535.00美元)
因为我的输出是65535.0,比答案要少10000
我似乎找不到错误,因为我刚刚开始用Java做这些继承类的事情,所以我仍然不熟悉它。如果你能帮我理解我把事情搞砸了,谢谢你。下面是发生的事情: 创建Marketer,它调用员工的构造函数和实例初始化。这将
基本工资设置为40000。然后运行Markerter构造函数中的代码,并将baseSalary
设置为50000。他们的测试驱动程序调用值为65535.0的setBaseSalary
,覆盖您的初始设置
您的代码未与Employee类正确交互。Employee.java
中的注释表示您的代码不应该使用、调用或修改以下值。其中一个是baseSalary
变量,您正在Marketer
构造函数中修改它。一旦测试驱动程序更改了值,您的类就无法计算营销人员更改后的工资
您不应该在构造函数中调用setBaseSalary
。相反,在Marketer中重写getSalary
,并使用您自己类中Employee的getSalary
方法。以下是我的解决方案示例:
public class Marketer extends Employee {
public void advertise() {
System.out.println("Act now, while supplies last!");
}
public double getSalary() {
return super.getSalary() + 10000;
}
}
它应该能帮助你们更好地理解问题。解决你们问题的方法很简单。只需定义营销人员类别如下
public class Marketer extends Employee {
public void advertise() {
System.out.println("Act now, while supplies last!") ;
}
@Override
public double getSalary() {
return super.getSalary() + 10000.0; // $40,000.00
}
}
在这里,我们覆盖Employee类的getSalary方法,并且每当我们必须返回salary时,我们将向Employee salary添加10000
希望这能有所帮助您能解释一下为什么需要75535.0吗?我在问题或Employee.java中没有看到任何会导致打印75535.0的数字outputed@Steven我不确定…我知道Employee.java中的默认工资是40000美元。当我运行代码时,它说:“将75535.0预期输出的基本工资更改为$65535.00”。@Spring.Rush Employee.java是一个类,所以我认为没有主要方法谢谢你,我现在明白了!:乐意效劳:)如需任何其他帮助,请随时联系