小菜鸟学C#——接口

基本语法:

[public] interface 接口名称
{
接口成员;
}


官方定义:接口是指定一组函数成员而不实现成员的引用类型,其他类型-类和结构可以实现接口。

举个例子:

    我们需要定义两个类——企鹅类和麻雀类 他们都有共通的特点 ,吃喝睡。这时候利用多态的思想我们可以

定义一个父类 :鸟类。

        /// <summary>
        /// 抽象类 鸟类
        /// </summary>
        public  abstract class Bird  
        {
            
            public abstract void Eat();    //定义三个抽象方法 吃喝睡
            public abstract void Sleep();
            public abstract void Drink();

        }

但是麻雀会飞,企鹅会游泳 父类中并不能把飞和游泳两种方法都加入进去,因为并不是所有鸟类都会飞,会游泳,这时候就需要用到接口来实现这两个独有的方法。

        /// <summary>
        /// 游泳接口 实现游泳功能
        /// </summary>
        public interface ISwim
        {
            void Swim();

        }
        /// <summary>
        /// 飞翔接口 实现飞行功能
        /// </summary>
        public interface IFly
        {
            void Fly();
        }

让麻雀和企鹅继承鸟类和接口:

  public class Sparrow : Bird,ISwim //继承游泳接口 实现相对于麻雀独有的游泳功能
        {
            public override void Drink()
            {
                Console.WriteLine( "我会喝水");
            }

            public override void Eat()
            {
                Console.WriteLine("我能吃饭");
            }

            public override void Sleep()
            {
                Console.WriteLine("我要睡觉");
            }

            public void Swim()
            {
                Console.WriteLine("我会游泳啦");
            }
        }
        public class Penguin : Bird ,IFly //继承了飞翔接口 实现相对于企鹅独有的飞行功能
        {
            public override void Drink()
            {
                Console.WriteLine("我会喝水");
            }

            public override void Eat()
            {
                Console.WriteLine("我能吃饭");
            }

            public void Fly()
            {
                Console.WriteLine( "我能飞啦");
            }

            public override void Sleep()
            {
                Console.WriteLine("我要睡觉");
            }
        }

我们发现企鹅还能捕鱼功能,这时候我们就可以定义一个捕鱼接口,让企鹅类继承这个接口,实现捕鱼功能。

(一个子类只能继承一个父类,但是能继承多个接口)

还有一些需要注意的是:

1 )接口一般表示一种规范,同时也表示一种能力,继承了这个接口也就表示了有了这个能力。所有在给接口取名的时候一般以I开头。
2)接口中的成员不能有任何实现
3)接口中成员不能加访问修饰符,接口成员默认的修饰符为public
4)为了多态,接口不能被实例化,也就是说不能被new
5)接口中只能有方法,索引器,事件,不能有“字段”和构造函数
6)接口与接口之间可以继承 且可以多继承
7 ) 接口只能继承接口,而类可以同时继承接口和类
8)实现接口的子类必须实现接口的全部成员。
9)当一个抽象类继承一个接口,需要子类调用方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值