2016-12-03 92 views
-4

所以我在GrownUp类中创建了一个ArrayList,然后生成一个for循环来调用另一个类中的方法。当我试图调用这个新方法的对象时,我得到一个错误,它不能识别该对象。这是该方法的样子:错误调用类对象?

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类已创建使用PowerShower callshower = new PowerShower(1,1,1,1);所以我很困惑,为什么它正在寻找Person课程?该PowerShower类是相当大的,但我将它张贴:

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; 

} 

} 

我也不太清楚,因为我已经创建了一个类的对象,为什么我收到此错误,并要求其但它似乎没有认识到这个对象?任何事情都会很好,谢谢。

+1

错误是... –

+0

'无法找到符号' – Harry

+1

欢迎来到堆栈溢出!请查看我们的[SO问题清单](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)来帮助你提出一个好问题,从而得到一个很好的答案。 –

回答

2

你试图做的事情是不可能的。我不知道你为什么相信这是可能的。这不是多继承如何看起来不受Java支持的接口和默认方法。如果有可能,它会看起来像这样(不会编译):

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

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

people.get(0).callshower 

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

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

  • 添加的方法showerPerson并称之为:people.get(0).shower()

  • 变化PowerShower.shower()有一个参数Person,然后执行以下电话:callshower.shower(people.get(0))

+0

我已经更新了我的问题,eveything工作分开形式一个错误。感谢您的反馈意见。 – Harry