2017-04-04 87 views
-6

我有一個Vehicle超類,然後我有一個子類。我想要一個數組列表,它將所有子類中的對象添加到同一個列表中,但我很快就來了。Arraylist的子類

我目前在我的程序班有這個清單,但我已經將它移動了一下。

這是我在程序代碼:

ArrayList<Vehicles> Inventorie = new ArrayList<>(); 

public void setInventorie(Car newCar) { 
    Inventorie.add(newCar); 
} 

而且這個代碼我在汽車:

public void addCar(){ 
    System.out.println("Make: "); 
    Make = scan.nextLine(); 
    System.out.println("RegNr"); 
    regNr = scan.nextInt(); 
    System.out.println("Year"); 
    year = scan.nextInt(); 
    setValue(); 
    Car c1 = new Car(make, regNr, Year); 
    Program.setInventorie(c1); 
} 

汽車我得到「非靜態方法「setInventorie(PROJECT1 .Vehicles)'不能從靜態上下文中引用。「

我也不得不註釋掉主要方法或編譯器無法解析符號Inventorie(數組列表的名稱)。

試圖盡我所能解釋我的問題,希望有人能幫助。 是的,我是新來的,所以它可能看起來很愚蠢,但這是我能做的最好的。

感謝

+1

您應該研究[靜態方法和實例方法之間的差異(http://stackoverflow.com/questions/11993077/difference-between-static-methods-and-instance-方法)。你將'setInventorie()'定義爲一個實例方法,但是你將它用作一個類(靜態)方法。這在Java中是不允許的 – Oneiros

+0

並閱讀有關Java命名約定。只有類名或常量以UpperCase開頭;變量去carInventory總是... – GhostCat

回答

0

我猜它的線Program.setInventorie(c1);。您需要創建一個Program類的實例,並在其上調用setInventorie()setInventorie()不是一種靜態方法。

如:

Program myProgram = new Program(); 
myProgram.setInventorie(c1); 
+0

我沒有發佈所有的代碼,但我在程序中:Car c1 = new Car(); – brodude

+0

你沒有花太多時間學習基本的東西。請轉到我鏈接到的重複問題。 – GhostCat

+0

@brodude,請參閱我的回答:「您需要創建一個** Program **類的實例並調用setInventorie()。」 –