调用 class 对象时出错?

error calling class object?

所以我在 GrownUp class 中创建了一个 ArrayList,然后生成一个 for 循环以从另一个 class 中调用一个方法。当我试图调用这个新方法的对象时,我收到一个错误,提示它无法识别该对象。这是该方法的样子:

public void personShowering()
{
    PowerShower callshower = new PowerShower(1,1,1,1);

if(people.size()>1)
callshower.shower(people.get(0));
    }

}

   import java.util.ArrayList;

public abstract class Person 
{    
    ArrayList<Person> people;


Person(int age, String name) 
{


}
public void shower(Person x)
{
    people.get(0).shower(//what goes here?);
}

}

错误:

method shwer() in class perosn cannot be applied to given types;
required: Person
found: no given types

callshower 应该指的是一个名为 PowerShower 的 class,它是使用 PowerShower callshower = new PowerShower(1,1,1,1); 创建的,所以我很困惑为什么它会在 Person class? PowerShower class 很大但我会 post 它:

PowerShower

public class PowerShower extends Shower
{

    public int isOn = -1;
    public int isOff = 0;
    public int incrementTime;
    public int varPass = -1;

     @Override
     public int currentState()
    {

        if (varPass == 0)
        return isOff;
        else
        {
            return isOn;
        }
        //returns isOn;
}

    @Override
        public void useTime(int defaultTime)
        {

            defaultTime = 15;
            incrementTime = 1;

        }

    @Override
        public void shower()
        {

            PowerShower shower = new PowerShower(1,1,1,1);

            shower.timePasses();
        }

        @Override
         public void timePasses()
         {

             if(varPass == isOff)
                 varPass = 0;
             else
             {

             GasMeter.getInstance().incrementConsumed(waterUse);  
             GasMeter.getInstance().incrementConsumed(10);     
             int gasconsumed = GasMeter.getInstance().getGasUsed();    

             WaterMeter.getInstance().incrementConsumed(waterUse);  
             WaterMeter.getInstance().incrementConsumed(5);     
             int waterconsumed = WaterMeter.getInstance().getWaterUsed();

             System.out.println("Power shower water consumption = " + waterconsumed);
             System.out.println("Power shower gas consumption = " + gasconsumed);

             }

         }

    PowerShower(int electricityUse, int gasUse, int waterUse, int timeOn)  
{
    super(electricityUse, gasUse, waterUse, timeOn);

    this.electricityUse = 0 * incrementTime;
    this.gasUse = 10 * incrementTime; //10x1;
    this.waterUse = 5 * incrementTime; //5x1;
    this.timeOn = 15 * incrementTime;

} 

}

我不太确定为什么会收到此错误,因为我已经创建了一个 class 的对象并调用了它,但它似乎无法识别该对象?任何一个都很好,谢谢。

你想做的事是不可能的。我不知道你为什么相信这是可能的。 Java 不支持多重继承,但接口和默认方法除外。如果可能的话,它看起来像这样(不会编译):

public class GrownUp extends Person, SuperShower
.... 
people.get(0).shower()

您可以调用对象的方法。你不能做的是:

people.get(0).callshower

A Person 可能没有方法(或字段)callshowercallshower 是一个包含对象的变量。如果存在,您可以在其上调用方法 shower

看来你是想把人和洗澡放在一起。你可以做的是:

  • Person中添加方法shower并调用:people.get(0).shower()

  • 改变PowerShower.shower()有一个参数Person然后执行下面的调用:callshower.shower(people.get(0))