2016-12-03 4 views
-4

Итак, я создал ArrayList в классе GrownUp, который затем создает цикл for для вызова метода из другого класса. Когда я пытаюсь вызвать объект этого нового метода, я получаю сообщение об ошибке, что он не распознает объект. Это то, что метод выглядит следующим образом:ошибка вызова класса объекта?

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

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

} 

Person

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

Добро пожаловать в переполнение стека! Ознакомьтесь с нашим [Контрольным списком вопросов] (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 вероятно, не имеет какого-либо метода (или поле) callshower. callshower - переменная, содержащая объект. Вы можете вызвать метод shower на нем, если он существует.

Кажется, что вы хотите поставить человека и принять душ вместе. Что вы можете сделать, это:

  • Добавьте метод shower к Person и назвать его: people.get(0).shower()

  • Смените PowerShower.shower() иметь параметр Person, а затем сделать следующий вызов: callshower.shower(people.get(0))

+0

Я обновил свой вопрос, все работает отдельно от одной ошибки. Спасибо за ваш отзыв. – Harry

Смежные вопросы