接口的使用
为什么要使用接口?
- 它定义了方法的返回值、方法名和参数列表,但是不关心方法如何实现。
- 类实现接口,必须实现接口中的所有方法。说的直白一点,你就不会忘记写一些方法,比如写一个角色类,所有角色都可以收到伤害,实现接口,就必须实现受到伤害的方法。你就不会忘了做而导致程序报错。
- 可以以参数形式,来调用接口中的方法。
代码如下,由JAVA编写,其它语言类似
- 接口
//这是受到伤害的接口
public interface ITakenDamage {
void takenDamage(float damage);
}
- 角色类
//实现了ITakenDamege接口
public class Character implements ITakenDamage{
public float hp = 100;
public void takenDamage(float damage) {
hp -= damage;
}
}
//继承自Character类
class Zombie extends Character{
//重写父类方法,受到双倍伤害
public void takenDamage(float damage) {
hp -= 2f * damage;
}
}
//继承自Character类
class Soldier extends Character{
//重写父类方法,受到1/2伤害
public void takenDamage(float damage) {
hp -= 0.5f * damage;
}
}
- 测试代码
public class Demo {
public static void main(String[] args) {
Character zombie = new Zombie();
Character soldier = new Soldier();
System.out.println("Zombie的HP: "+zombie.hp);
System.out.println("Soldier的HP: "+soldier.hp);
//zombie和soldier都受到10点伤害,但由于他们护甲不同所以最终伤害不同
Hit(zombie,10f);
Hit(soldier,10f);
System.out.println("Zombie的HP: "+zombie.hp);
System.out.println("Soldier的HP: "+soldier.hp);
}
//Hit方法,ITakenDamage作为参数传入
public static void Hit(ITakenDamage character,float damage) {
character.takenDamage(damage);
}
}
运行结果:
总结:
使用接口后,接口可以以参数形式出入方法,去调用接口中定义的方法,而实际执行的是实现了接口的类中的方法。