【问题标题】:Can't call method from class 1 in class 2 [closed]无法从类 2 中的类 1 调用方法 [关闭]
【发布时间】:2013-12-06 05:37:32
【问题描述】:

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

【问题讨论】:

  • 你能提供你的班级工人的声明吗?
  • 你收到DoesNotWorkException了吗?
  • 显示更多代码,显示完成错误信息。
  • 与您的问题无关,但您的工作方法中没有使用变量 uren。
  • 这个问题似乎离题了,因为尽管我们要求提供进一步的相关信息和澄清,但原始发帖人仍对我们隐瞒。

标签: java inheritance methods


【解决方案1】:

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

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

【讨论】:

  • 这正是问题所在,非常感谢!
  • @TrickBoss 你应该接受他的回答。
  • @HovercraftFullOfEels:他说的是皮特是这样声明的。员工皮特;而不是工人皮特;因此需要将其转换为 Worker。
【解决方案2】:

您的 Worker 类似乎无法编译。在您的 Worker 课程中,您遇到了案例问题。你的构造函数是一个小的w,它应该是一个大写W

【讨论】:

  • 抱歉,我是从原始语言(荷兰语)翻译过来的,在这里输入时出错,虽然在我的程序中是正确的
【解决方案3】:

这不是构造函数:

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

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

【讨论】:

  • @Whomever 否决了:想解释一下吗?
  • 他遇到的错误cannot find symbol - method work(int);不是Worker(name, hourplay),顺便说一句,我不是反对者
  • 我猜你没有阅读我的全部答案。 (提示:最后 2 行)。
【解决方案4】:

你没有正确初始化任何东西。 members[] 是什么类型?假设pete是Workers的对象,则需要将其初始化为Workers pete = new Worker("Piet", 9)等等。

【讨论】:

    【解决方案5】:

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

    【讨论】:

    • 这个还有待确认,EmployeeEmployees不一样
    猜你喜欢
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多