• 接口如何实现多态


    由于继承有单根性这一个特点,也就是说一个类只能继承与一个父类,但是有时候我们需要继承多个类,那莪这样就有了接口的出现,
    接口实现让一个类可以继承多个类,继承的多个类实际上就是继承的接口

    接口使用interface关键字来表示一个类是一个几接口

    接口的特点

    1、接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员)
    2、为了多态。接口不能被实例化。也就是说,接口不能new(不能创建对象)
    3、只要一个类继承了一个接口,这个类就必须实现这个接口中所有的成员
    4、接口中的成员不能加“访问修饰符”,接口中的成员访问修饰符默认为public,且不能修改。
    5、接口中只能有方法、属性、索引器、事件,不能有“字段”和构造函数。
    6、接口与接口之间可以继承,并且可以多继承
    7、接口并不能去继承一个类,而类可以继承接口 (接口只能继承于接口,而类既可以继承接口,也可以继承类)
    8、一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA,那么语法上A必须写在IA的前面。

     //真的鸭子会游泳 木头鸭子不会游泳 橡皮鸭子会游泳
     //不同的鸭子游泳的方式不一样,所以在父类中我不知道怎么实现,所以这里考虑使用接口的方法
      public interface ISwimming
        {
            void Swim();
        }
       public class RealDuck:ISwimming
        {
    
            public void Swim()
            {
                Console.WriteLine("真的鸭子靠翅膀游泳");
            }
        }
       public class XPDuck : ISwimming
        {
    
            public void Swim()
            {
                Console.WriteLine("橡皮鸭子飘着游泳");
            }
        }
        public class MuDuck 
        { 
        //这里因为木头鸭子不会游泳,所以不继承接口也就不用实现接口中的方法
        }

    同样我们在Main方法中调用一下

    static void Main(string[] args){
         ISwimming swim = new XPDuck();//new RealDuck();
             swim.Swim();
             //橡皮鸭子飘着游泳
    }

    其实会发现接口和抽象类实现多态很相似,只是接口更加注重的是方法的实现

    上面提到接口和接口之间可以继承,并且接口可以继承多个接口,那么如果一个类继承了一个有多继承的接口时,这个类中需要将所有继承链上的方法全部实现

    就像下面酱紫————————

     public interface M1
        {
            void Test1();
        }
    
        public interface M2
        {
            void Test2();
        }
    
        public interface M3
        {
            void Test3();
        }
    //下面这个接口继承了多个接口
        public interface SupperInterface : M1, M2, M3
        { 
    
        }
    //这个类继承了一个有多个继承的接口,所以需要实现继承链上的所有方法
        public class Car : SupperInterface
        {
    
            public void Test1()
            {
                throw new NotImplementedException();
            }
    
            public void Test2()
            {
                throw new NotImplementedException();
            }
    
            public void Test3()
            {
                throw new NotImplementedException();
            }
        }
  • 相关阅读:
    函数
    关联子查询
    子查询
    视图(VIEW)
    顺时针打印矩阵
    二叉树的镜像
    树的子结构
    将两个有序链表合并
    反转链表
    输出链表中倒数第k个结点
  • 原文地址:https://www.cnblogs.com/sisi-job/p/8798496.html
Copyright © 2020-2023  润新知