Java 定义类字段并调用父';s构造函数
这是我写的两类代码。。这里的问题是,我不知道如何定义类字段来使用static将Grass、fire和water表示为一个类型。。 我也不确定我是否正确使用了超级函数。。如何正确调用父级的构造函数,以便不必重新定义“knockedOut boolean”并能够使用Fire作为类型? 这个问题可能会让人困惑,但我不知道如何更好地解释:(对不起Java 定义类字段并调用父';s构造函数,java,static,extends,super,Java,Static,Extends,Super,这是我写的两类代码。。这里的问题是,我不知道如何定义类字段来使用static将Grass、fire和water表示为一个类型。。 我也不确定我是否正确使用了超级函数。。如何正确调用父级的构造函数,以便不必重新定义“knockedOut boolean”并能够使用Fire作为类型? 这个问题可能会让人困惑,但我不知道如何更好地解释:(对不起 公共抽象类口袋妖怪{ 私有字符串名称; 私有字符串类型; 私人攻击; 私人卫生; 私有布尔敲除; 静态私有串草; 静态私有串水; 静态私有串火; 公共口袋妖怪
公共抽象类口袋妖怪{
私有字符串名称;
私有字符串类型;
私人攻击;
私人卫生;
私有布尔敲除;
静态私有串草;
静态私有串水;
静态私有串火;
公共口袋妖怪(字符串n、字符串t、整数a、整数h){
name=n;//状态
type=t;//状态
攻击=a;//状态
health=h;//状态
敲除=假;
}
公众伤害(口袋妖怪敌人);
公共字符串toString(){
返回“}”;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getType(){
返回类型;
}
公共void集合类型(字符串类型){
this.type=type;
}
public int getAttack(){
回击;
}
公共无效设置攻击(int攻击){
这个攻击=攻击;
}
公共卫生{
恢复健康;
}
公共健康(内部健康){
健康=健康;
}
公共布尔值isKnockedOut(){
返回敲除;
}
public void setKnockedOut(布尔knockedOut){
this.knockedOut=knockedOut;
}
}
公共抽象类Charizard扩展了口袋妖怪{
私人静电串火;
私人攻击火力;
私人火灾;
私人静串水;
私人静串草;
公共慈善机构(内部a、内部h){
超级(“查里扎德”,火,a,h);
攻击火力=a;
healthFire=h;
}
公共攻击伤害(口袋妖怪敌人){
int enemyAttack=敌方.getAttack();
if(敌方.getType().equals(水)){
敌方.setHealth(敌方.getHealth()-attackFire/2);
healthFire=healthFire敌人.getAttack()*2;
如果(friend.getHealth()您想要像这样声明您的不同类型:
static public final String GRASS= "Grass";
static public final String WATER = "Water";
static public final String FIRE = "Fire";
(我在这里遵循既定惯例,即声明的静态
、公共
、和最终
字段的名称应为所有大写字母。)
通过声明这些字段public
,任何其他类(包括扩展Pokemon
的类,例如Charizard
)这可能需要测试Pokemon
的类型才能使用它们。通过声明它们final
,即使它们是公共的
,也没有人可以更改它们。通过给它们初始值,你可以使它们在区分不同类型的Pokemon
时非常有用,同时避免不可避免的空指针第一次执行类似于p.getType().equals(Pokemon.FIRE)
至于knockedOut
,看起来您处理它的方法是正确的。knockedOut
字段在Pokemon
中是私有的,但是您提供了公共getter和setter方法,其他类可以(也确实)使用它们来访问它
static public final String GRASS= "Grass";
static public final String WATER = "Water";
static public final String FIRE = "Fire";