无法在Java中为基类解析为变量

无法在Java中为基类解析为变量,java,Java,我是java新手,正在创建一个小程序,以了解核心java的基本原理。我正在创建一个员工基本信息和工资统计程序。但当我试图访问父变量以便使用该变量并计算员工的工资时,却收到一条错误消息,即empSalaryobj无法解析为变量 下面是我的Java代码 class varEmployee { int empId; String empName; final String empCompany = "Tata Consultancy Services"; int emp

我是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);
    }

}

谁能帮帮我吗。我还想知道为什么会出现此错误消息

empSalaryobj是在getEmployee的构造函数中定义的局部变量。它不是getEmployeeSalary的任何父类的字段,因此无法在getEmployeeSalary的构造函数中访问它。

您需要为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构造函数中实现它

此外,还需要将EMPA数据字段设置为getEmployee类

public class getEmployee extends varEmployee
{
    public int empSalaryobj;



}

在这里,我使用Eric Allman缩进样式,因为它在任何辩论中都比K&R样式好

我将首先研究命名约定并修复那些类名ha。好的,谢谢。我写的方式不对吗?我正在学习,所以对此不太了解。empSalaryob是getEmployee类中getEmployee方法中的一个局部变量,因此无法在其他地方访问它,而且类名看起来很奇怪,getter和setter类?假设您所遵循的问题和方法不好。在您的getEmployeesetEmployee obj中,将变量声明移动到topHello@abcOfJava,我现在已经实现了解决方案及其工作。我从你提供的文章中查到了很多东西。我真的需要努力工作。谢谢大家!@ADITYABATRA没问题,很高兴我能帮助您在java中进行一次有趣的编码之旅,特别是当您最终遇到swing组件时