调用 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
可能没有方法(或字段)callshower
。 callshower
是一个包含对象的变量。如果存在,您可以在其上调用方法 shower
。
看来你是想把人和洗澡放在一起。你可以做的是:
在Person
中添加方法shower
并调用:people.get(0).shower()
改变PowerShower.shower()
有一个参数Person
然后执行下面的调用:callshower.shower(people.get(0))
所以我在 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
可能没有方法(或字段)callshower
。 callshower
是一个包含对象的变量。如果存在,您可以在其上调用方法 shower
。
看来你是想把人和洗澡放在一起。你可以做的是:
在
Person
中添加方法shower
并调用:people.get(0).shower()
改变
PowerShower.shower()
有一个参数Person
然后执行下面的调用:callshower.shower(people.get(0))