Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 定义类字段并调用父';s构造函数_Java_Static_Extends_Super - Fatal编程技术网

Java 定义类字段并调用父';s构造函数

Java 定义类字段并调用父';s构造函数,java,static,extends,super,Java,Static,Extends,Super,这是我写的两类代码。。这里的问题是,我不知道如何定义类字段来使用static将Grass、fire和water表示为一个类型。。 我也不确定我是否正确使用了超级函数。。如何正确调用父级的构造函数,以便不必重新定义“knockedOut boolean”并能够使用Fire作为类型? 这个问题可能会让人困惑,但我不知道如何更好地解释:(对不起 公共抽象类口袋妖怪{ 私有字符串名称; 私有字符串类型; 私人攻击; 私人卫生; 私有布尔敲除; 静态私有串草; 静态私有串水; 静态私有串火; 公共口袋妖怪

这是我写的两类代码。。这里的问题是,我不知道如何定义类字段来使用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";