c#的接口

定义

        接口指定一组方法成员而不实现他们的引用类型

        public interface MyInterface {

            void foo();

            //其他方法

        }

类与类之间是继承关系(用:(冒号)),而类与接口之间是实现关系(用:(冒号))

案例

用程序描述USB接口

 interface IUSB
    {
        //此方法没有方法体,默认是
        //public、virtual、abstract修饰
        void ChaBa();
}
    class ShuBiao:IUSB
    {
        public  void ChaBa()
        {
            Console.WriteLine("能点");
        }
}

class FengShan:IUSB//类实现接口
    {
        public void ChaBa()
        {
            Console.WriteLine("能吹");
        }
        //static void Main(string[] args)
        //{
        //    //IUSB a = new IUSB();
        //    IUSB a = new FengShan();//多态
        //    a.ChaBa();
        //   // a = new ShuBiao();//多态
        //   // a.ChaBa();

        //    IUSB b = new ShuBiao();//多态
        //    b.ChaBa();

        //    FengShan fs = new FengShan();//面向对象编程
        //    fs.ChaBa();
        //}
    }

接口表示一种能力

做这项工作需要一个钳工(木匠/程序员)

        钳工是一中能力,不关心具有是谁

接口是一种能力

        体现在接口的方法上

面向接口编程

程序设计时

        关心实现类有和能力,而不关心实现细节

        面向接口的约定而不考虑接口的具体实现

实现防盗门功能

 

abstract class Door
    {
      public abstract void OpenDoor();
      public abstract void CloseDoor();
}
interface Lock
    {
        void OpenLock();
        void CloseLock();
}
class FangDaoDoor:Door,Lock    //继承抽象类和接口
    {
        public override void OpenDoor()    //实现抽象类需要加Override
        {
            Console.WriteLine("开门");
        }
        public override void CloseDoor()
        {
            Console.WriteLine("关门");
        }
        public void OpenLock()    //实现见接口不需要加Override
        {
            Console.WriteLine("开锁");
        }
        public void CloseLock()
        {
            Console.WriteLine("上锁");
        }
        //static void Main(string[] args)
        //{
        //    FangDaoDoor fd = new FangDaoDoor();
        //    Door d = fd;
        //    Lock a = fd;
        //    d.CloseDoor();
        //    a.CloseLock();
        //    a.OpenLock();
        //    d.OpenDoor();
        //}
    }

接口是一种约定

 

interface Printer
    {
        void PrintA4();
        void PrintB5();
}
class User:Printer
    {
        string color;
        public void PrintA4()
        {
            color = "彩色";
            Console.WriteLine("打印"+color+"A4纸张");
        }
        public void PrintB5()
        {
            color = "黑白";
            Console.WriteLine("打印" + color + "B5纸张");
        }
        static void Main(string[] args)
        {
            Printer p = new User();
            p.PrintA4();
            p.PrintB5();
        }
}

接口的特征

        1、接口不可以被实例化

        2、实现类必须实现接口的所有方法

        3、实现类可以实现多个接口

        4、接口中的变量都是静态常量

接口类和接口的区别

        

抽象类接口
不同点用Abstract定义用interface定义
只能继承一个类可以实现多个接口
非抽象派生类必须实现抽象方法实现接口的类必须实现所有成员
需要用Overide实现抽象直接实现
相似点不能实例化
包含未实现的方法
派生类必须实现未实现的方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星梦∞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值