https://www.itcast.cn/mianshi/20230331/09511888655.shtml
在面向对象编程中,通常使用抽象类和接口来定义类的行为和属性。抽象类是一种具有抽象方法和非抽象方法的类,而接口是一组方法签名,没有实现。
以下是一些情况下,可能更倾向于使用抽象类而不是接口:
假设我们正在设计一个游戏,其中包含多种不同类型的敌人。这些敌人有共同的行为,如移动、攻击和受伤等。我们可以使用抽象类或接口来定义这些共同行为。
以下是使用抽象类定义敌人的示例代码:
public abstract class Enemy {
private int health;
private int speed;
public Enemy(int health, int speed) {
this.health = health;
this.speed = speed;
}
public abstract void move();
public abstract void attack();
public void takeDamage(int damage) {
health -= damage;
if (health <= 0) {
die();
}
}
public void die() {
// Default implementation for all enemies
}
}
在上面的代码中,我们定义了一个抽象类Enemy,其中包含了敌人的一些共同属性和方法。move()和attack()方法是抽象方法,需要在具体的敌人类中实现。takeDamage()和die()方法是具有默认实现的非抽象方法,所有的敌人都可以继承这些默认实现,如果需要可以进行重写。
以下是使用接口定义敌人的示例代码: