zoukankan      html  css  js  c++  java
  • c#接口

    1.接口语法:

    [public] interface IFlyable
    {
    //接口中的成员不能添加访问修饰符。默认修饰符public
    //接口中不允许成员有方法体。
    //接口中不能包含字段。
    //接口中能写自动属性,但不能写普通属性
    //自动属性,既没有字段也没有方法体。普通属性既有字段也有方法体。
    //自动属性
    //接口中不能包含构造函数,因为构造函数一定包含方法体。
    string Name
    {set;
    get;}
    //接口中只能有方法(方法,属性,索引器)
    void Fly();
    }

    2.接口的特点
    接口是一种规范,只要一个类继承了一个接口,这个类就必须实现这个接口中所有的成员。

    为了实现多态;接口不能被实例化;也就是说,接口不能创建对象。
     //接口不能实例化,静态类不能实例化,抽象类也不能实例化

    接口中的成员不能加访问修饰符,接口中的成员的访问修饰符默认为public,不能修改。
    接口中只能有方法,属性,索引器,事件,不能有字段和构造函数。(因为接口中不能有实现体,故不能包含构造函数)

    接口与接口之间可以继承,并且可以多继承。
    接口并不能去继承一个类,而类可以继承接口,(接口只能继承于接口,而类既能继承接口,又能继承类)

    实现(继承)接口的子类必须实现该接口的全部成员。

    一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并且实现了接口IA,那么在语法上A必须写在IA的前面。
    如:class MyClass:A ,IA{};因为是单继承

    显示实现接口的目的,解决方法的重名问题
    什么时候显示的去实现接口。
    当继承的接口中的方法和参数一模一样的时候,要显示的实现接口

    当一个抽象类实现接口的时候,需要子类去实现接口。


    显示实现接口:
    作用:为了解决方法的重名问题。
    public interface M2
        {
            void Exam();
        }

        public class Mas : M2
        {
            public void Exam()
            {
           
            }
            //类mas中有同名方法,故使用显示实现接口
            void M2.Exam()
            {
                throw new NotImplementedException();
            }
        }

     //什么时候用虚方法来实现多态
      //什么时候用抽象类来实现多态
      //什么时候用接口来实现多态

      //真的鸭子会游泳,木鸭子不会游泳,橡皮鸭子会游泳
      /*
       真鸭子,橡皮鸭子、木鸭子不能抽象成一个类,故不能用抽象类实现。
       * 又真鸭子和橡皮鸭子会,而木鸭子不会,动作不一致,故不能用虚方法实现
       * 其中三者都表示是否会、、。且不同类别,故使用接口实现     
                 */

  • 相关阅读:
    java内联函数
    jvm垃圾回收
    jvm内存管理
    java进程和线程的区别
    jvm
    简单易学的SSM(Spring+SpringMVC+MyBatis)整合
    Spring之声明式事务
    SpringMVC知识点小结
    Servlet之文件的上传与下载
    java使用字节流和字符流实现文件复制
  • 原文地址:https://www.cnblogs.com/jefy/p/9207538.html
Copyright © 2011-2022 走看看