2014-02-21 40 views
0

在Java類的方法添加到您的自定義Java類

我要創建我的類增加了一個不同的類的對象我自己的方法添加一個簡單的問題添加對象。

對於例如,如果我的類名是武器,我想創建狀空洞附加(槍槍)(槍是我的其他類,例如之一)

這將是一個add方法就像創建自己的收集也許?如果我沒有錯的話?像list.add()方法,我想實現我自己的武器類add方法

所以當我實例化我的武器類的對象時,它應該像 Weapon w = new Weapon(new Gun(。 .. ..構造函數參數))

此外我想有我的添加方法的變種。像一個不同的添加方法,不同的參數像void add(武器武器)(創建一個方法來添加你自己的類對象)

所以我不確定這是否類似於實現一個集合?如果這是我如何實現它?我是否需要爲此擴展其他課程?

道歉,如果我的問題困惑任何人! :)

+0

絕對讓我困惑。 –

+0

你是對的,它確實讓我困惑。目前還不清楚你試圖達到什麼以及你的實際問題是什麼。如果你想要一個'add()'方法,什麼阻止你寫一個?它與收藏有什麼關係? – dirkk

+0

只是要指出一個顯而易見的問題:「Weapon w = new Weapon(new Gun(...))」對我來說並不合適。另一方面,'武器w =新槍(...)'。 –

回答

0

當您實例化時,您不一定必須執行new Gun()。您只需做到以下幾點:

class Weapon 
{ 
    private Gun gun; 
    public Weapon() 
    { 
     gun = new Gun(); //etc. 
    } 
    //add more methods here. You can use gun.function() to invoke any functions 
} 

至於使用Weapon對象,剛剛宣佈在Weapon類的公共方法,然後在你的方法調用它們。

例如,add()功能:

class Weapon 
{ 
    ... 
    public int val() { return 0; } // don't know, some random method. 
} 

然後在不同的文件:

int add(Weapon w) 
{ 
    return Weapon.val() + 1111; //perform something here 
} 

我希望這回答你的問題,這是一個有點不清楚:|。評論你是否需要更多幫助。

0

你的問題對我來說有點不清楚,但我會盡我所能。

如果你想有一個ListWeapon,那麼你需要使用繼承。在你的例子中,A Gun is-a Weapon。因此,你可以做class Gun extends Weapon。然後,假設你使用的是ArrayList,你實例化它想:

List<Weapon> weapons = new ArrayList<Weapon>(); 

您現在可以調用添加與Gun,或任何其他子類的Weapon像這樣:

weapons.add(new Gun()); //or 
weapons.add(new Cannon()); 

如果您實際上需要將Gun添加到Weapon(這沒有什麼意義......),您可以使用組合。請參閱Shahar的回答,以獲得對此行爲更詳細的解釋。

只是爲了澄清,不管是什麼,我敢肯定,創建一個新的收藏是你想在這裏做什麼。

0

這些都是很多問題:-)讓我們來一一列舉

  1. 創建一個名爲add()爲對象的方法使這個對象集合?不可以。要成爲一個集合,類必須實現接口java.util.Collection或實現任何一個子接口或擴展任何實現此接口的子類。它們的列表可在集合javadoc - http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html
  2. 如果我想添加一個對象到另一個,它必須通過構造?例如新武器(新槍())?不必要。你可以創建一個Weapon w = new Weapon(),然後通過諸如w.setGun(new Gun())等方法添加Gun引用。無論如何,任何具有一個或多個參數的構造函數都必須在您的類中明確聲明。只有非參數構造函數默認可用。

現在,讓我們假設你想存儲一個類武器的子類類槍。然後,你首先需要定義它們之間的層次,例如

class Weapon{  
} 

class WeaponWithBlade extends Weapon{  
} 

class Sword extends WeaponWithBlade{   
} 

class Knife extends WeaponWithBlade{   
} 

class Gun extends Weapon{  
} 

,然後你想將所有這些武器存放在武器收繳。

,因爲所有的人都對武器類的子類,它是有效的做這樣的事情

java.util.List<Weapon> weapons = new java.util.ArrayList<>(); 
    weapons.add(new Sword()); 
    weapons.add(new Gun()); 

注意兩個列表和ArrayList是集合(名單是一個接口和ArrayList是一個具體的類,它實現List接口),參數化爲武器集合。

我希望這可以幫助你。

0
List<Object> weapons = new ArrayList<Object>();  

weapons.add(new Sword());  
weapons.add(new Gun()); 

試試這個。

相關問題