[2020-11-03] 接口在面向对象程序设计中的使用,为什么要使用接口

接口在编程中定义了方法的签名,确保实现接口的类包含特定的方法。通过接口,可以确保类不会遗漏必要的方法,并且可以作为参数传递,调用其实现类的方法。例如,在Java代码示例中,接口用于确保角色类具有‘受到伤害’的方法,避免编程错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接口的使用


为什么要使用接口?

  • 它定义了方法的返回值、方法名和参数列表,但是不关心方法如何实现。
  • 类实现接口,必须实现接口中的所有方法。说的直白一点,你就不会忘记写一些方法,比如写一个角色类,所有角色都可以收到伤害,实现接口,就必须实现受到伤害的方法。你就不会忘了做而导致程序报错。
  • 可以以参数形式,来调用接口中的方法。

代码如下,由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);
	}
	
}

运行结果:
前两行为原本生命,后两行为受到伤害后的生命

总结:
使用接口后,接口可以以参数形式出入方法,去调用接口中定义的方法,而实际执行的是实现了接口的类中的方法。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值