关于Java类的简单问题
我想用自己的add方法创建我的类,它添加了一个不同类的对象。
例如,如果我的班级名称是武器,我想创建一个像void add(枪支枪)这样的添加方法(枪就是我其他类之一)
这就像创建自己的收藏品一样???如果我没错?像list.add()方法一样,我想为Weapon类实现我自己的add方法
所以当我实例化我的武器类的一个对象时,应该是这样的 武器w =新武器(新枪(......构造函数参数))
另外,我想要添加方法的变体。像一个不同的add方法,使用不同的参数,如void add(武器武器)(创建一个添加自己的类对象的方法)
所以我不确定这是否与实现集合类似?如果是我如何实现它?我是否必须为此扩展另一个类?
如果我的问题困惑任何人,请道歉! :)
答案 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>();
您现在可以使用Gun
或Weapon
的任何其他子类调用add,如下所示:
weapons.add(new Gun()); //or
weapons.add(new Cannon());
如果您确实需要将Gun
添加到Weapon
(这实际上没有意义......),您可以使用合成。有关此行为的更详细解释,请参阅Shahar的答案。
只是为了澄清,无论如何,我很确定创建一个新的集合 不 你想在这里做什么。
答案 2 :(得分:0)
这些是很多问题:-)让我们列举一下
现在,让我们假设您要存储一个类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());
试试这个。