分别定义有参构造方法用于初始化life属性这个怎么没体现啊
时间: 2024-11-09 19:22:15 浏览: 13
python基础之面向对象&静态方法&类方法&属性方法&魔法方法以及 反射,封装,继承(新式类 与 经典类),多态,
抱歉,确实遗漏了部分代码。在子类中,我们可以为每个子类提供一个带参数的构造方法,用于在实例化时设置初始的生命值。这里是补全后的部分:
```java
// 子类Peashooter的完整定义
class Peashooter extends Plant {
private int initialLife; // 新增一个私有的初始生命值字段
public Peashooter(int initialLifeValue) { // 带参数的构造方法
super("豌豆射手");
this.initialLife = initialLifeValue; // 设置初始生命值
life = initialLifeValue; // 初始化生命值
}
@Override
public void attack() {
System.out.println("豌豆射手正在攻击,生命值:" + life);
}
// 重写toString方法,包含生命值
@Override
public String toString() {
return "植物类型:" + type + ", 生命值:" + life;
}
}
// 同理,对于Sunflower类也做类似处理
class Sunflower extends Plant {
private int initialLife;
public Sunflower(int initialLifeValue) {
super("向日葵");
this.initialLife = initialLifeValue;
life = initialLifeValue;
}
@Override
public void attack() {
System.out.println("向日葵正在生产阳光,生命值:" + life);
}
// ... 其他代码保持不变
}
```
现在在创建豌豆射手或向日葵对象时,你可以通过传递参数来指定它们的初始生命值了。例如 `new Peashooter(10)` 或 `new Sunflower(50)`。
阅读全文