zoukankan      html  css  js  c++  java
  • 【c# 学习笔记】接口

    一、什么是接口 

      接口 可以理解为对一组方法声明进行的同一命名,但这些方法没有提供任何实现。也就是说,把一组方法声明在一个接口中,然后继承于该接口的类都

    需要实现这些方法。

      例如,很多类型(比如int 类型、string类型和字符类型等)都需要比较大小,此时可以定义一个比较接口,在该接口中定义比较方法,然后让这些类型去

    继承该接口,并实现自己的比较方法。

      通过接口,你可以对方法进行统一的管理,避免了在每种类型中重复定义这些方法。

    二、接口的定义

      2.1、接口的定义与类的定义非常类似,只是使用的关键字不一样罢了,类的定义使用class关键字,而接口使用interface关键字进行定义。

    在visual Studio中添加接口的步骤如下:

        2.1.1、创建一个全新的控制台应用程序,把它命名为CustomInterface;

        2.1.2、右击项目,在弹出的菜单中选择“添加” →“新建项” 菜单项,选择接口,输入名称,点击确定。如下:

        

        interface ICustomCompare
        {
          //定义比较方法,继承该接口的类都要实现该方法
          int CompareTo(object other);
    }

      在接口中定义方法不能添加任何访问修饰符,因为接口中的方法默认为Public,如果显式地指定了修饰符,则会出现编译时错误。

      在接口中除了可以定义方法之外,还可以包含属性、事件、索引器,或者这4类成员(包括方法)类型的任意组合;但接口类型不能包含字段、运算符重载、

    实例构造函数和析构函数。

      接口中的所有成员都默认是公共的,因此不能再使用public、private和protected等访问修饰符进行修饰,也不能使用static修饰符。如果在接口中定义了不该包含的成员,就会导致编译错误。

    三、继承接口

      定义完接口后,若有类想继承该接口,则它必须实现接口中定义的所有方法。类继承接口与继承类是一样的,只需要使用英文的冒号“:”,后接接

    口名就可以了。如下:

      

     1     //不使用封装特性来定义一个Person类
     2     public class Person:ICustomCompare
     3     {
     4         int age;
     5         public int Age
     6         {
     7             get { return age; }
     8             set { age = value; }
     9 
    10         }
    11         public int CompareTo(object value)
    12         {
    13             if(value  == null)
    14             {
    15                 return 1;
    16             }
    17 
    18             //将object类型强制转换为Person类型
    19             Person otherp = (Person)value;
    20             //把当前对象的Age属性与需要比较的对象的Age属性进行对比
    21 
    22             if(this.Age < otherp.Age)
    23             {
    24                 return -1;
    25             }
    26 
    27             if (this.Age < otherp.Age)
    28             {
    29                 return 1;
    30             }
    31 
    32             return 0;
    33         }
    34 
    35  
    36     }

      以上代码中,定义了一个Person类继承于ICustomCompare接口,并且该类实现了接口中定义的CompareTo方法。

      CompareTo方法会首先判断参数对象是否为null,如果比较的对象为空,就直接返回1,代表当前对象比传入对象大。如果比较的对象不为null,则首先把它强制转换为Person类型(传进来的参数是object类型,不同类型的对象间不存在可比性)。再比较他们的Age属性。如果当前对象(即Person对象)的Age属性比传入对象的Age属性值大,则返回1,说明当前对象比传入对象大;如果返回-1,则表示比传入的对象小;相等,则返回0;

    四、调用接口中的方法

      代码如下:

            static void Main(string[] args)
            {
    
                Person p1 = new Person();
                p1.Age = 19;
    
                Person p2 = new Person();
                p2.Age = 19;
    
                if (p1.CompareTo(p2) > 0)
                {
                    Console.WriteLine("P1比P2大");
                }
                else if (p1.CompareTo(p2)<0)
                {
                    Console.WriteLine("p1比p2小");
                }
                else
                {
                    Console.WriteLine("p1和p2一样大");
                }
    
    
                Console.Read();
            }
  • 相关阅读:
    Web开发较好用的几个chrome插件
    SQL注入专题
    内存泄露检测之ccmalloc
    ruby method lambda block proc 联系与区别 next break return
    c++构造函数详解
    VIM使用系列之一—配置VIM下编程和代码阅读环境
    一个项目经理的经验总结
    如何改正拖拉的习惯
    PHP开源软件《个人管理系统》希望大家一起来开发
    PHP 开源软件《个人管理系统》——完善登录模块
  • 原文地址:https://www.cnblogs.com/xiaoyehack/p/9214579.html
Copyright © 2011-2022 走看看