我有一种方法可以将数据写入superclass(Employee)
的文件中。我需要在该方法中编写其他员工的数据,但我不确定如何访问子类中的实例变量以完成此操作。
public class Employee
{
protected String name;
protected String employeeNum;
protected String department;
protected char type;
}
public void writeData()
{
BufferedWriter printer = new BufferedWriter(new FileWriter("fileName"));
//code here that adds Employee information, and Commission information to file
}
public class Commission extends Employee
{
private int weeksStart;
private double baseWeeklySalary;
private double salesWeekly;
private double totalSales;
private double commissionRate;
}
答案 0 :(得分:1)
Commission
信息在超类中无法访问,但您可以覆盖子类中的writeData()
,这样您就可以访问Employee
和Commission
信息。
@override
public void writeData()
{
BufferedWriter printer = new BufferedWriter(new FileWriter("fileName"));
String data="name:"+name+","+"employeeNum:"+employeeNum+
","+"......"+","+"weeksStart:"+weeksStart;
printer.write(data);
}
答案 1 :(得分:0)
我在理解你的问题时遇到了一些麻烦,但如果我是正确的,你会想知道如何从一个Employee实例外部访问Commission的私人成员。如果这是正确的,请点击这里:
问题在于您使用Polymorphism而没有正确构建佣金子类以允许访问您想要的私有成员。由于成员是私有的,因此您无法从任何其他类访问它们。您需要将get / set方法添加到Commission类以访问这些私有成员。这样可以严格控制它们,同时还可以防止外部调整。
例如,如果您想设置或获得 佣金率,您可以在佣金类中添加方法,例如:
public void setCommissionRate(double newRate){
//Confirming a non-negative input - set checks appropriately for your use
if(newRate >= 0)
commissionRate = newRate;
}
public double getCommissionRate(){
return commissionRate;
}
这将为您选择的私人成员提供对其他课程的访问权限。但是,set方法通常比获取私有成员的方法更加稀缺,因为它可以提供对外部类的过多访问,并且通常是继承或添加到构造函数中。
如果从Employee实例访问,则在委托类中需要重写的write方法以允许访问其成员。
希望我回答了你的主要问题,这可以帮助你。