Java Can';t在类2中从类1调用方法

Java Can';t在类2中从类1调用方法,java,inheritance,methods,Java,Inheritance,Methods,我有两门课。1类看起来像这样,并且具有“work”方法 我试图在另一个类的构造函数中调用该类,如下所示: 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] =

我有两门课。1类看起来像这样,并且具有“work”方法

我试图在另一个类的构造函数中调用该类,如下所示:

   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)”

看起来您的
工作者类没有编译。在你的
Worker
课程中,你有一个案例问题。你的构造函数有一个小的
w
,它应该是大写的
w

我猜变量
pete
被声明为class
Employee
,这意味着只能对该变量调用该类的方法。您必须将
pete
声明为类型
Worker
,或使用强制转换:

((Worker)pete).work(5);

这不是一个构造函数:

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;
}

此外,消息“找不到符号”通常是由缺少导入引起的(至少在代码中是这样)。检查导入。

您正在基类构造函数中调用子类构造函数。除非基类构造函数完成,否则子类对象不会被创建,对吧,因此,当基类构造函数完成时,子类对象不会被创建,因此,工作方法不存在,因此会出现错误。

您没有正确初始化任何内容。什么类型的成员[]
?假设
pete
是Workers的对象,您需要将其初始化为
Workers-pete=new-Worker(“Piet”,9)
等等。

您可以提供类Worker的声明吗?您是否得到了
doesnorkexception
?显示更多代码,显示完整的错误消息。与您的问题无关,但在你的工作方法中没有使用变量uren。这个问题似乎是离题的,因为尽管我们要求提供进一步的相关信息和澄清,但原始海报对我们隐瞒了。这一点尚待确认,
员工
员工
不是same@Whomever否决票:想解释一下吗?他所犯的错误
找不到符号-方法功(int)
;不是与
工人(姓名,小时数)
,顺便说一句,我不是下一个我猜你没有阅读我的全部答案。(提示:最后2行)。对不起,我从原语(荷兰语)翻译过来,在这里输入时出错,尽管在我的程序中它是正确的,这正是问题所在,非常感谢@特里克博斯:你应该接受他的回答。@hoverfullofeels:他说的是,皮特是这样被宣布的。雇员皮特;而不是工人皮特;因此,有必要将其交给工人。
public Worker(String name, int hourPay) // note the capital W
{
    super(name);
    this.hourPay = hourPay;
}