我是java的新手,并创建了一个小程序来清除核心java的基本原理。我正在创建一个员工基本信息和工资统计的程序。但是,当我尝试访问父变量以便我可以使用该变量并计算员工的工资时,却收到一条错误消息“empSalaryobj 无法解析为变量”。
下面是我的Java代码,
class varEmployee {
int empId;
String empName;
final String empCompany = "Tata Consultancy Services";
int empSalary;
String empGender;
int empAge;
String empNationality;
}
class setEmployee extends varEmployee{
setEmployee(){
}
setEmployee(int empId){
this.empId=empId;
switch(empId){
case 1:
empName = "Aditya Batra";
empSalary = 10000;
empGender = "Male";
empAge = 26;
empNationality = "Indian";
break;
case 2:
empName = "Vishal Sharma";
empSalary = 20500;
empGender = "Male";
empAge = 26;
empNationality = "Australia";
break;
case 3:
empName = "Ashish Tiwari";
empSalary = 30000;
empGender = "Male";
empAge = 28;
empNationality = "Indian";
break;
case 4:
empName = "Mona Lisha";
empSalary = 40000;
empGender = "Female";
empAge = 24;
empNationality = "Oganda";
break;
default:
System.out.println("Invalid Employee ID");
}
}
}
class getEmployee extends setEmployee {
getEmployee(){
}
getEmployee(setEmployee obj){
int empIdobj = obj.empId;
String empNameobj = obj.empName;
int empSalaryobj = obj.empSalary;
String empGenderobj = obj.empGender;
int empAgeobj = obj.empAge;
String empNationalityobj = obj.empNationality;
System.out.println("Employee Id: "+empIdobj+"\nName: "
+empNameobj+"\nSalary: "+empSalaryobj
+"\nGender: "+empGenderobj+"\nAge: "
+empAgeobj+"\nNationality: "+empNationalityobj
+"\nCompany Name: "+empCompany);
}
}
class getEmployeeSalary extends getEmployee {
int empSalaryCaculation = empSalaryobj;
getEmployeeSalary(int empLeaves){
float empSal = (empSalaryCaculation/30)*(30-empLeaves);
System.out.println("Salary after leave deduction: "+empSal);
}
}
public class Employee {
public static void main(String[] args) {
setEmployee setobj=new setEmployee(1);
getEmployee getobj=new getEmployee(setobj);
getEmployeeSalary salobj=new getEmployeeSalary(5);
}
}
有人可以帮我吗。我也想知道为什么会出现这个错误信息。
你的 getEmployeeSalary 类需要有一个构造函数
getEmployeeSalary(int empLeaves,getEmployee employee)
{
float empSal = (employee.empSalaryobj/30)*(30-empLeaves);
System.out.println("Salary after leave deduction: "+empSal);
}
并且您不需要,int empSalaryCaculation = empSalaryobj;
因为您直接在 getEmployeeSalary 构造函数中实现它
您还需要使 empSalary 成为类 getEmployee 的数据字段
public class getEmployee extends varEmployee
{
public int empSalaryobj;
}
在这里我使用 Eric Allman 缩进样式,因为它在任何辩论中都比 K&R 样式更好
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句