我有2节课。 1类看起来像这样,并且有“工作”方法。
public class Worker extends Employee
{
int hourPay;
int amountHours = 0;
public Worker(String name, int hourPay)
{
super(name);
this.hourPay = hourPay;
}
public void work(int hours)
{
amountHours = amountHours + hours;
}
...
}
我正试图在另一个类的构造函数中调用此类:
public Employees()
{
john = new Clerk("Jan", 1750);
pete = new Worker("Piet", 9); // Clerk and Worker are classes inherited from Employees
pete.work(5);
members[0] = john;
members[1] = pete;
}
为什么这不起作用?我总是收到错误“找不到符号 - 方法工作(int)”
答案 0 :(得分:1)
我的猜测是变量pete
被声明为类Employee
,这意味着只能在该变量上调用该类的方法。您必须将pete
声明为Worker
类型,或使用强制转换:
((Worker)pete).work(5);
答案 1 :(得分:0)
看起来你的Worker
类没有编译。在您的Worker
课程中,您遇到了案例问题。你的构造函数有一个小的w
,它应该是一个大写W
答案 2 :(得分:0)
这不是构造函数:
public worker(String name, int hourPay)
{
super(name);
this.hourPay = hourPay;
}
应该是:
public Worker(String name, int hourPay) // note the capital W
{
super(name);
this.hourPay = hourPay;
}
此外,消息“找不到符号”通常是由于缺少导入(至少看起来像你的代码中的情况)。检查你的进口。
答案 3 :(得分:0)
您尚未正确初始化任何内容。什么类型members[]
?假设pete
是Workers的对象,则需要将其初始化为Workers pete = new Worker("Piet", 9)
,依此类推。
答案 4 :(得分:-2)
您正在调用基类构造函数中的子类构造函数。除非基类构造函数完成,否则不会创建子类对象,因此,当基类构造函数完成它时,得到的子类对象不会被创建,因此,工作方法不存在,因而错误。< / p>