Java 当只需要该类的一个实例时,是否应该每次创建指向该类的新链接?
例如,有一个职业战士链接了职业剑。类内定义字段:公共静态int hp=100;显示了这种武器消耗的生命值。需要几个职业。我想我需要在类战士中定义链接剑(只有一次)才能获得静态场hp。我怎样才能正确链接它Java 当只需要该类的一个实例时,是否应该每次创建指向该类的新链接?,java,oop,Java,Oop,例如,有一个职业战士链接了职业剑。类内定义字段:公共静态int hp=100;显示了这种武器消耗的生命值。需要几个职业。我想我需要在类战士中定义链接剑(只有一次)才能获得静态场hp。我怎样才能正确链接它 class public Warrior{ public String name; public Sword s = new Sword(); // ??? } class public Sword{ public static int hp = 100; } 每次创
class public Warrior{
public String name;
public Sword s = new Sword(); // ???
}
class public Sword{
public static int hp = 100;
}
每次创建新战士时,newswill()
是否会创建指向类的链接?
我可以在另一个武器类中将剑类定义为静态的吗?(需要多个类,比如剑)
下面的结构正确吗?外部类是否可以是静态的,并保存在另一个静态类中
class public Warrior{
public String name;
public int SwordHp = Weapon.Sword().hp;
public int BowHp = Weapon.Sword().hp;
}
(abstract?) public static class Weapon{
public static class Sword{
public static int hp = 100;
}
public static class Bow{
public static int hp = 90;
}
我不确定您到底想要什么,但正如您现在的代码示例所示,战士的构造会导致剑的构造 这取决于你所说的“消耗的健康点”是什么意思。如果你想记录这类武器造成的所有伤害,你最好使用你的静态生命场。如果这是您想要的,我建议您使用一个跟踪各种统计数据的系统。大概是这样的:
Statistics.getStatisticsForPlayer(playerName). // Get the statistics for a player
increaseValue("damage_caused_by_sword", extraDamage); // increase that property
如果你想记录每把剑的生命值(这对我来说是最现实的,因为剑不会永远锋利),你应该创建非静态场。这使该字段成为每个剑实例的属性。是的,每次你都会得到一把新剑 但是,由于hp是一个静态字段,因此您只能获得其中一个字段 有关更多信息,请查看此链接:
如果
hp
是静态的
,则您根本不需要成员剑
。您可以使用swarm.hp
访问该字段,以获得不需要创建的静态字段hp
public Sword s = new Sword();
在武士班。静态变量在加载时初始化。因此,只需使用
剑.hp
这对静态变量没有任何影响
Sword s = new Sword()
据我所知,你们有一个战士和不同的武器,就像现在的剑一样。每个武器都有生命值,每个战士都有自己的武器和生命值。如果您使用静态字段,那么这些生命值将在所有战士之间共享,如果50名战士,那么所有战士将只使用100点,我希望您不需要,所以您应该使用:
class public Warrior{
public String name;
public Sword s = new Sword(); // ???
}
class public Sword{
public int hp = 100;
}
每创造一个战士,它将创造一把拥有100点生命值的新剑,每个战士将消耗自己的生命值。希望它能有所帮助。如果武器类型的数量不变,那么enum将很好地工作
enum Weapon {
Sword(100),
Bow(90);
private final int hp;
private Weapon(int hp) {
this.hp = hp;
}
int getHp();
}
public class Warrior {
public String name;
public Weapon weapon = Weapon.Sword;
}
也许你应该考虑一个
武器
超类,比如公共类剑扩展武器
。我可以将剑类(武器类的子类和嵌套类)定义为静态类(以便只获得一个实例)吗?需要一种类型的剑。所以我想让它在父类中保持静态。但是。。。。我想你还没有完全理解OOP是什么。Java中的类类似于“人”(它是一种类型、排序、种族),而类的对象就是您。你(对象)是人类(类)。因此,在这种情况下,说需要一种剑是胡说八道。创建一个类剑,定义一把剑。一旦你创建了剑类的物体,你就可以“触摸”它。然后你可以把它交给一个能用它战斗的战士。我有一个战士有一种武器。每件武器都有生命值(命中=伤害后的生命值)。我不需要追踪武器的血量(它的损坏程度)。所以我认为我只需要一个静态(或抽象???)类武器,它是每个子类(剑、弓等)的父类。