2016-12-03 8 views
-4

私は、GrownUpクラス内にArrayListを作成しました。この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クラスで探していますか?私は、そのクラスのオブジェクトを作成し、それを求めているので、なぜ私はこのエラーを取得していますあまりにもわからないんだけど

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; 

} 

} 

PowerShowerPowerShowerクラスはかなり大きいですが、私はそれを投稿しますそのオブジェクトを認識しているようには見えませんか?どんなものも素晴らしいでしょう、ありがとう。

+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() 

あなたは、オブジェクトのメソッドを呼び出すことができます。あなたはどうすることができないことはこれです:Personはおそらく何のメソッド(またはフィールド)callshowerを持っていない

people.get(0).callshower 

callshowerはオブジェクトを含む変数です。存在する場合、方法showerを呼び出すことができます。

人を入れて一緒にシャワーをしたいと思うようです。あなたにできることは次のとおりです。

  • Personに方法showerを追加し、それを呼び出す:people.get(0).shower()

  • 変更PowerShower.shower()パラメータPersonを持っているし、次の呼び出しを行うには:callshower.shower(people.get(0))

+0

私は自分の質問を更新しました.eveythingは1つのエラーから離れて動作します。ご意見をいただきありがとうございます。 – Harry

関連する問題