一种add方法,用于在自定义java类中添加对象

时间:2014-02-21 00:44:26

标签: java

关于Java类的简单问题

我想用自己的add方法创建我的类,它添加了一个不同类的对象。

例如,如果我的班级名称是武器,我想创建一个像void add(枪支枪)这样的添加方法(枪就是我其他类之一)

这就像创建自己的收藏品一样???如果我没错?像list.add()方法一样,我想为Weapon类实现我自己的add方法

所以当我实例化我的武器类的一个对象时,应该是这样的 武器w =新武器(新枪(......构造函数参数))

另外,我想要添加方法的变体。像一个不同的add方法,使用不同的参数,如void add(武器武器)(创建一个添加自己的类对象的方法)

所以我不确定这是否与实现集合类似?如果是我如何实现它?我是否必须为此扩展另一个类?

如果我的问题困惑任何人,请道歉! :)

4 个答案:

答案 0 :(得分: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
}

我希望这能回答你的问题,有点不清楚:|。如果您需要更多帮助,请发表评论。

答案 1 :(得分:0)

我的问题有点不清楚,但我会尽我所能。

如果您想要List Weapon,那么您需要使用继承。在您的示例中,A Gun是-Weapon。因此,您可以执行class Gun extends Weapon。然后,假设您正在使用ArrayList,您可以将其实例化为:

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

您现在可以使用GunWeapon的任何其他子类调用add,如下所示:

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

如果您确实需要将Gun添加到Weapon(这实际上没有意义......),您可以使用合成。有关此行为的更详细解释,请参阅Shahar的答案。

只是为了澄清,无论如何,我很确定创建一个新的集合 你想在这里做什么。

答案 2 :(得分:0)

这些是很多问题:-)让我们列举一下

  1. 在对象中创建一个名为add()的方法,使该对象成为Collection?要成为集合,类必须实现接口java.util.Collection或实现任何一个子接口或扩展实现此接口的任何子类。 Collection javadoc中提供了它们的列表 - http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html
  2. 如果我想将一个对象添加到另一个对象中,它必须通过构造函数?例如新武器(新枪())?不必要。你可以创建一个武器w = new Weapon(),然后通过w.setGun(new Gun())之类的方法添加Gun参考。无论如何,任何具有一个或多个参数的构造函数都必须在类中明确声明。默认情况下,只有非参数构造函数可用。
  3. 现在,让我们假设您要存储一个类Gun,它是类Weapon的子类。然后,您首先需要定义它们之间的层次结构,例如

    class Weapon{       
    }
    
    class WeaponWithBlade extends Weapon{       
    }
    
    class Sword extends WeaponWithBlade{        
    }
    
    class Knife extends WeaponWithBlade{        
    }
    
    class Gun extends Weapon{       
    }
    

    然后你想把所有这些武器存放在武器集合中。

    因为它们都是Weapon类的子类,所以做这样的事情是有效的

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

    注意List和ArrayList都是集合(List是一个接口,ArrayList是一个实现List接口的具体类),参数化为武器集合。

    我希望这可以帮到你。

答案 3 :(得分:0)

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

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

试试这个。