第二十五式:C# 接口 (武林盟约)

绝世
秘籍
冲儿,五岳剑派虽然武功不同,但都签订了“五岳盟约”:凡是五岳弟子,必须会使剑,必须会轻功。
这个“盟约”在 C# 中就叫接口 (Interface)
所以接口只规定“要做什么”,不规定“怎么做”?
正是!接口就像一份合同,签了合同(实现接口)的门派,就必须履行义务(实现方法)。

1. 定义接口 - 起草盟约

接口名通常以 I 开头(Interface),里面的方法没有身体(没有 {})。


interface ISwordsman // 剑客盟约
{
    void Attack(); // 必须会攻击
    void Defend(); // 必须会防御
}
        

2. 实现接口 - 歃血为盟

一个类可以签多份合同(实现多个接口),这弥补了单继承的不足。


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("弹奏《笑傲江湖曲》...");
    }
}
                    

成就解锁:【文武双全】 获得:琴谱