Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我对Java继承相当陌生,我不熟悉';我不明白我为什么会出错?_Java_Inheritance - Fatal编程技术网

我对Java继承相当陌生,我不熟悉';我不明白我为什么会出错?

我对Java继承相当陌生,我不熟悉';我不明白我为什么会出错?,java,inheritance,Java,Inheritance,问题是: 撰写“市场营销人员”课程,与本章中介绍的其他律师事务所课程一起学习。营销人员的收入为50000美元(比普通员工多10000美元),还有一种称为广告的额外方法,该方法打印“立即行动,供应持续!”确保与员工超类进行适当的互动。 迄今为止的守则: public class Marketer extends Employee { public Marketer() { setBaseSalary(super.getSalary() + 10000.0);

问题是:

撰写“市场营销人员”课程,与本章中介绍的其他律师事务所课程一起学习。营销人员的收入为50000美元(比普通员工多10000美元),还有一种称为广告的额外方法,该方法打印“立即行动,供应持续!”确保与员工超类进行适当的互动。

迄今为止的守则:

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是一个类,所以我认为没有主要方法谢谢你,我现在明白了!:乐意效劳:)如需任何其他帮助,请随时联系