无法从类2中的类1调用方法

时间:2013-11-21 16:16:15

标签: java inheritance methods

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

5 个答案:

答案 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>