2016-12-03 112 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