gpt4 book ai didi

Java - 无法从子类对象访问抽象方法

转载 作者:行者123 更新时间:2023-11-30 10:55:23 25 4
gpt4 key购买 nike

我正在开发一个 Java 项目,其中有一个名为 Personnel 的父类(super class)和两个子类; ManagerWorker

子类包含单独的变量,用于保存有关他们工资的信息,我以前有方法 getSalary() 用于 ManagergetWage() 用于 Worker。但是,我希望其中的一些可以通过 for 循环访问,所以我将一个抽象方法放入名为 getAnnualIncome()Personnel 类中,并将相应的方法放入两个子类:

public abstract class Personnel
{
//attributes of each instance of class
protected String name;
protected int payrollNum;
protected String dept;

//abstract method to be defined in subclasses
public abstract float getAnnualIncome();
}

管理器中:

public float getAnnualIncome()
{
//convert salary variable to real number
float salaryAsFloat = salary;

//return real number
return salaryAsFloat;
}

Worker 中:

public float getAnnualIncome()
{
//number of weeks in a year as constant value
final int weeksInYear = 52;

//weekly wage by number of weeks in a year
return ((hourlyRate * hoursPerWeek) * weeksInYear);
}

这一切在理论上都可以正常工作,但是当我开始实际实现我提到的 for 循环时(使用 Personnel 类的数组,并将来自两个子类的对象作为元素),下面的部分代码无法识别 getAnnualIncome() 方法(这取自可执行主类):

for (int index = 0; index < employee.length; ++index)
{
System.out.printf(employee[index].getName()
+ "\t\t" + "£%.2f %n", employee[index].getAnnualIncome());
//error message appears here ^^ 'method is undefined in 'Personnel'
}

不太确定这里出了什么问题,我认为我已经涵盖了所有需要完成的事情。正如您从我的代码摘录中看到的那样,该方法在父类(super class)中!

我真的不知道从这里该何去何从,任何向正确方向的插入都将不胜感激!

谢谢,标记

最佳答案

你能用两个子类的对象作为元素来创建一个 Personnel 类的数组吗?因为这本身会给你错误。 “无法将子类(Worker/Manager)转换为 Personnel[]。

如果这对您来说工作正常,那么问题出在注解@Override 上。

关于Java - 无法从子类对象访问抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33366027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com