Java 找不到符号-方法

Java 找不到符号-方法,java,methods,Java,Methods,很难在主界面中调用方法。一直说找不到symbol-method addSales(double) 我正在做一个编程项目,因为我们刚刚了解了继承,它有3个超类和3个子类。我有一个问题与一个子和超级类。他们被命名为小时和佣金。佣金每小时发放一次。我觉得我已经正确地编写了addSales方法,但是当我在main中调用它时,它说它找不到该方法。我是不是遗漏了什么?任何帮助都将不胜感激 佣金类别: public class Commission extends Hourly { private doubl

很难在主界面中调用方法。一直说找不到symbol-method addSales(double)

我正在做一个编程项目,因为我们刚刚了解了继承,它有3个超类和3个子类。我有一个问题与一个子和超级类。他们被命名为小时和佣金。佣金每小时发放一次。我觉得我已经正确地编写了addSales方法,但是当我在main中调用它时,它说它找不到该方法。我是不是遗漏了什么?任何帮助都将不胜感激

佣金类别:

public class Commission extends Hourly
{
private double totalSales, commission;

public Commission(String eName, String eAddress, String ePhone,
String socSecNumber, double rate, double commissionRate)
{
    super(eName, eAddress, ePhone, socSecNumber, rate);
    totalSales = 0.0;
    commission = commissionRate;
}

public double pay()
{
    double payment = super.pay();
    payment = (payment + (commission * totalSales));
    return payment;
}
public String toString()
{
    String result = super.toString();
    result += "Total Sales: " + totalSales;

    return result;

}
public void addSales(double totalS)
{
    totalSales = totalSales + totalS;
}
}
小时班:

public class Hourly extends Employee
{
private int hoursWorked;

//-----------------------------------------------------------------
//  Sets up this hourly employee using the specified information.
//-----------------------------------------------------------------
public Hourly (String eName, String eAddress, String ePhone,
String socSecNumber, double rate)
{
    super (eName, eAddress, ePhone, socSecNumber, rate);

    hoursWorked = 0;
}

//-----------------------------------------------------------------
//  Adds the specified number of hours to this employee's
//  accumulated hours.
//-----------------------------------------------------------------
public void addHours (int moreHours)
{
    hoursWorked += moreHours;
}

//-----------------------------------------------------------------
//  Computes and returns the pay for this hourly employee.
//-----------------------------------------------------------------
public double pay()
{
    double payment = payRate * hoursWorked;

    hoursWorked = 0;

    return payment;
}

//-----------------------------------------------------------------
//  Returns information about this hourly employee as a string.
//-----------------------------------------------------------------
public String toString()
{
    String result = super.toString();

    result += "\nCurrent hours: " + hoursWorked;

    return result;
}
}
主要内容:


staff6
被声明为
Hourly
,尽管它实际上是一个
佣金
,但您正在尝试访问super class方法


将其声明为
佣金

员工6和
员工7
都是
小时
的实例。
Hourly
类没有附加特定的方法


您必须将它们声明为佣金的具体实例。

我看到下面的对象创建:

 Hourly staff6 = new Commission("Marcus Gendron", "66 Highland St.", "272-9555", "123-62-5678", 6.25, 0.20);
addSales方法位于子类佣金中。但是staff6的类型是Hourly,它是父类,Hourly类没有这个方法。这是你看不到的方法addsales

要获得更详细的理解,请尝试以下行(这将很好地编译)。看看你有什么办法

Object staff6 = new Commission("Marcus Gendron", "66 Highland St.", "272-9555", "123-62-5678", 6.25, 0.20);

在这里,您只能调用类中存在的方法

因为您现在引用的小时类是addSales in not present on Hourly class,所以无法访问它

 Hourly staff6 = new Commission("Marcus Gendron", "66 Highland St.", "272-9555", "123-62-5678", 6.25, 0.20);

在上面的代码中,Commission类对象引用了Hourly类。所以Commission对象将只允许访问那些小时类的方法(因为它们是继承的)和Commission类中小时类的重写方法

张贴你得到的错误和在哪一行。它没有说行上的数字,但它突出显示了行“staff6.addSales(400.0);”并说“找不到符号-方法addSales(double)”,我想得太多了。我的老师写东西的方式让我觉得我必须做一件事,但那是完全不同的。谢谢你的帮助。成功了。我还是个新手,所以有了这个网站真的很有帮助。
 Hourly staff6 = new Commission("Marcus Gendron", "66 Highland St.", "272-9555", "123-62-5678", 6.25, 0.20);