[Java]为什么我的tester类中会出现这些错误?
我有一个超类、子类和一个tester类。有人能帮我解决我做错的事吗 以下是我在测试仪课程中需要的内容- 1.创建经理和员工的对象[Java]为什么我的tester类中会出现这些错误?,java,inheritance,subclass,superclass,Java,Inheritance,Subclass,Superclass,我有一个超类、子类和一个tester类。有人能帮我解决我做错的事吗 以下是我在测试仪课程中需要的内容- 1.创建经理和员工的对象 创建函数Review salary以修改在经理或员工的构造函数中设置的薪资。(使用多态性的概念) 使用对象的显示功能打印与对象类相关的信息 这是我的课 超类: public class Employee { private int employeeNumber; private String employeeName; private doub
public class Employee {
private int employeeNumber;
private String employeeName;
private double employeeSalary;
public Employee(int employeeNumber, String employeeName, double employeeSalary) {
this.employeeNumber = employeeNumber;
this.employeeName = employeeName;
this.employeeSalary = employeeSalary;
}
public double getEmployeeSalary() {
return employeeSalary;
}
public void setEmployeeSalary(double employeeSalary) {
this.employeeSalary = employeeSalary;
}
public void display(){
System.out.println("Employee Number: "+ employeeNumber +"\n"
+ "Employee Name: " + employeeName + "\n"
+ "Employee Salary: " + employeeSalary);
}
}
子类:
public class Manager extends Employee {
private int rewards;
public Manager(int employeeNumber, String employeeName, double employeeSalary) {
super(employeeNumber, employeeName, employeeSalary);
}
public void display() {
super.display();
System.out.println(rewards);
}
}
测试人员:
public class Test {
public static void main(String [] args) {
Manager manager = new Manager(11111, "Elon Musk", 42344);
manager.display();
Employee employeeOne = new Employee(324, "Bob Den", 3522);
Employee employeeTwo = new Employee(44, "Tim Pipe", 4234 );
Employee employeeThree = new Employee(42, "Asif Blar", 4321);
private void reviseSalary() {
double employeeSalary = manager.getEmployeeSalary();
manager.setEmployeeSalary(employeeSalary +(employeeSalary /10));
manager.display();
}
}
}
**我的问题:
我在考试课上出错了。当我创建一个manager对象时,它说构造函数是未定义的。另外,对于我的私人空白“reviseSalary”,它说我不能使用空白
有人能告诉我我做错了什么吗?如果可能的话,能帮助我创建我的修订版功能吗
谢谢把你的修订版放在主方法之外 发生此错误是因为Java不支持嵌套函数 这将是您的输出:
- 员工编号:11111
- 员工姓名:埃隆·马斯克
- 员工工资:42344.0
- 员工编号:11111
- 员工姓名:埃隆·马斯克
- 员工工资:46578.4
我发现您的代码存在两个主要问题: 1) 在
main()
方法中声明方法reviseSalary()
。Java不允许在另一个方法中声明方法。
您应该在main()方法之外声明它,并添加一个关键字static
,以允许您调用此方法,而无需拥有Test
类的实例。否则,如果不将此方法声明为static
,则需要测试类的实例,并且必须在此实例上调用reviseSalary()
,如下所示:
Test t = new Test() ;
t.reviseSalary();
2) 您在
Manager
类中声明了此字段:private int rewards
,但您没有声明任何setter方法来为该字段分配任何值。您可以发布从控制台获得的错误吗?您在主方法中定义了方法“reviseSalary”。请阅读@RobertKock写的内容,这是唯一的问题,其他一切都很好。@J.Doe如果您用不同的方法声明和实例化manager,另一个方法无法访问它。您在main中声明了它,并试图从reviseSalary()访问它。请不要通过破坏您的帖子为人们做更多的工作。通过在Stack Exchange(SE)网络上发布,您已根据授予SE分发该内容的不可撤销权利(即,无论您未来的选择如何)。根据SE政策,该帖子的非故意破坏版本是发布的版本。因此,任何故意破坏行为都将被还原。若要按照示例中显示的方式调用方法reviseSalary(),应将其声明为静态。否则,您将需要首先引用Test类的实例来调用该引用上的reviseSalary(),例如:Test t=new Test();然后:t.reviseSalary()@PrzemysławMoskal在reviseSalary方法中为我的manager对象获取“manager无法解决”错误。有什么想法吗?@MarcoVeríssimo在reviseSalary方法中为我的manager对象获取“manager无法解决”错误。有什么想法吗?1)在reviseSalary()方法声明中添加一个参数:private void reviseSalary(Manager){…}。2) 当您在main()中调用该方法时,请尝试这样做:reviseSalary(manager)@我测试了代码,现在完全可以工作了。告诉我你是否还有一个problem@J.Doe如果将此字段设置为静态,则只能在该类内部设置或更改分配给此字段的值。但在管理器类中,您既不提供构造函数内部的初始化,也不提供setter方法来为该字段赋值。
Test t = new Test() ;
t.reviseSalary();