接口名通常以 I 开头(Interface),里面的方法没有身体(没有 {})。
interface ISwordsman // 剑客盟约
{
void Attack(); // 必须会攻击
void Defend(); // 必须会防御
}
一个类可以签多份合同(实现多个接口),这弥补了单继承的不足。
class HuaShanDisciple : ISwordsman
{
public void Attack()
{
Console.WriteLine("独孤九剑!");
}
public void Defend()
{
Console.WriteLine("紫霞神功护体!");
}
}
ISwordsman,却少写了一个 Defend 方法,编译器会判你违约,直接报错!
定义一个接口 IMusician(乐师),包含 PlayMusic()。
让 Linghu 类同时继承 Swordsman(父类)并实现 IMusician(接口)。
这样令狐冲就既会剑法,又会奏琴了(笑傲江湖曲)。
interface IMusician
{
void PlayMusic();
}
class Linghu : Swordsman, IMusician
{
public void PlayMusic()
{
Console.WriteLine("弹奏《笑傲江湖曲》...");
}
}