基本上,我有一个名为 WarriorSkills 的类,我想根据 Warrior 对象武器统计数据更新技能造成的伤害。我能想到的获得对战士类对象的引用以根据战士武器对象(伤害和强度)改变战士技能统计数据的唯一方法是使用战士类的参数作为该方法WarriorSkills 类中的 getRoughSkillDamageModified()。
头等舱
public class WarriorSkills extends Skills {
private int rageCost;
private double damageModified;
public void getRoughSkillDamageModified(Warrior plc) //By Armour/Weapon stats
{
damageModified = plc.getWeapon().getAverageDamage() + plc.getStrength();
}
public void updateStats()
{
this.setStrength(this.getStrength() + this.warriorWeapon.getBonusStrength());
this.skills.getRoughSkillDamageModified(this);
}
二等
public class Warrior extends StrengthUser {
private String className = "Warrior";
private StrengthWeapon warriorWeapon;
private WarriorSkills skills;
public Warrior(Warrior originalObject)
{
super(originalObject);
}
public Warrior(int stam, int health, int resi, int str, int rage, StrengthWeapon
warrWep, WarriorSkills warSkill)
{
super(stam, health, resi, str);
this.skills = warSkill;
this.warriorWeapon = warrWep;
}
public String getClassName()
{
return className;
}
public void updateStats()
{
this.setStrength(this.getStrength() + this.warriorWeapon.getBonusStrength());
this.skills.getRoughSkillDamageModified(this);
}
public StrengthWeapon getWeapon()
{
return this.warriorWeapon;
}
public WarriorSkills warriorSkills()
{
return this.skills;
}
}
但是正如你所看到的,为了调用这个方法(在 Warrior 类中)我必须使用 'this' 代表 Warrior 类,既作为调用对象又作为参数传递。现在,“this”关键字的使用对我来说似乎有点奇怪,但似乎确实有效。它是否被惯例或其他什么避免了,或者是否有任何潜在的问题。我的书似乎还没有告诉我,我总是喜欢尝试。
更新了完整的类定义。注意 Warrior 类继承自 StrengthUser 类,而 StrengthUser 类又继承于 PlayerClass 类。而 WarriorSkill 继承自 Skill 类。 编辑:该死的忘了省略摆弄代码=/ Bleh 再次更新, self 注意:不要在提出问题和发布完整类(class)之间摆弄代码。问题首先涉及的方法调用丢失了,哈哈。现在又出现了。
最佳答案
示例代码中所有使用 this.
的地方都是不必要的。然而,这是否“明智”取决于你。
这是一个见仁见智的问题。
有些人认为使用 this.
可以提高可读性,从而明确您正在使用/调用的字段或方法是目标类的成员。我认为它没有帮助,除了 Java 初学者。
但是,在某些情况下,有必要使用 this
进行限定;例如
public class Example {
private int field;
public void setField(int field) {
this.field = field; // 'this' is required here ...
}
}
如果您询问...skills.getRoughSkillDamageModified(this)
,将当前对象的引用作为参数传递给其他方法或构造函数绝对没有“不明智”的地方。
关于java - 这是对 'this' 关键字的不明智使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25214070/