[英][Java]Why am I getting these errors in my tester class?
我有一個超級類,一個子類和一個測試器類。 誰能幫我解決我做錯的事情?
這是測試人員類中需要的-1.創建Manager和Employee的對象。
創建一個功能修訂工資來修訂在經理或雇員的構造函數中設置的工資。 (使用多態的概念)
使用對象的“顯示”功能可打印與對象類有關的相關信息。
這是我的課
超類:
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();
}
}
}
**我的問題:
我在測試課上遇到錯誤。 當我創建一個管理器對象時,它說構造函數是未定義的。 另外,對於我的私人空白“ reviseSalary”,它說我不能使用空白
誰能告訴我我在做什么錯,並在可能的情況下幫助創建我的reviseSalary函數
謝謝
只需將reviseSalary置於主要方法之外。
發生此錯誤的原因是Java不支持嵌套函數。
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);
reviseSalary(manager);
}
private static void reviseSalary(Manager manager) {
double employeeSalary = manager.getEmployeeSalary();
manager.setEmployeeSalary(employeeSalary +(employeeSalary /10));
manager.display();
}
}
這將是您的輸出:
員工編號:11111
- 員工姓名:Elon Musk
- 員工薪資:42344.0
員工編號:11111
- 員工姓名:Elon Musk
- 員工薪資:46578.4
我發現您的代碼存在兩個主要問題:
1)您在main()
方法中聲明方法reviseSalary()
。 Java不允許您在其他方法內部聲明方法。 您應該在main()方法之外聲明它,並添加關鍵字static
以使您無需擁有Test
類的實例即可調用此方法。 否則,如果您不將此方法聲明為static
,則將需要Test類的實例,並且必須在此實例上調用reviseSalary()
,如下所示:
Test t = new Test() ;
t.reviseSalary();
2)您在Manager
類中聲明了此字段: private int rewards
,但是您沒有聲明任何setter方法來為該字段分配任何值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.