对C#中接口的认识

简单的说接口是为了约束方法的格式(参数和返回值类型)而存在的 。但是注意:

接口是一个引用类型,通过接口可以实现多重继承。

2. C#中接口不能有new、public、protected、internal、private等修饰符。(即没有访问修饰符,不能实例化)

 

3. 接口中只能声明"抽象"成员(所以不能直接 下一步对接口进行实例化(即不能使用new操作符声明一个接口的实例对 象)),而不能声明共有的域或者私有的成员变量。

 

4. 接口声明不包括数据成员,只能包含方法、属性、事件、索引等成员(索引的本质是属性,属性的本质是方法,事件的本质是方法,所以接口中只能有方法)。

 

5. 接口名称一般都以“I”作为首字母(当然不这样声明也可以),这也是接口和类的一个区别之一。 [2]

 

6. 接口成员的访问级别是默认的(默认为public),所以在声明时不能再为接口成员指定除public外的任何访问修饰符( 因为CLR会自动添加),否则 编译器会报错。

 

7. 接口成员不能有static、abstract、override、virtual修饰符,使用new修饰符不会报错,但会给出警告说不需要关键字new。

 

8. 在声明接口成员的时候,不准为接口成员编写具体的可执行代码,也就是说,只要在对接口进行声明时指明接口的成员名称和参数就可以了,不用写方法体。

 

9. 接口一旦被继承,子类需要把接口中所有成员实例化(通过具体的可执行代码实现接口抽象成员的操作)。

 

10.接口要谨慎使用,防止出现接口污染(好的接口定义应该是具有专一功能性的,而不是多功能的,否则造成接口污染)

11..接口可以看成是一个特殊的抽象类,通过反编译看源码可知

接口与抽象类的区别:

  1.接口仅仅代表一种能力,实现该接口的类和接口没有继承关系

    2.接口是用来实现的,类是用来继承的。

   3.一个类一次可以实现若干个接口,但是只能扩展一个父类    

  4.子类不一定继承抽象类的所有方法,但接口必须继承所有方法。 

  5.当两者之间是 is a 是,则是继承关系,考虑抽象类。如果是 has a 时,考虑接口。

  6.抽象类也可以实现接口,但接口成员必须映射到抽象类的抽象成员。抽象类的派生类如果是非抽象类,则必须通过方法重载来实现接口成员。

所以,我们可以说接口的继承首先是说明性继承,不是实现性继承,它的实现需要通过类或结构来实现;其次接口继承可以是多继承。

索引器:

 

02.定义索引器的方式与定义属性有些类似,其一般形式如下:

 

  [修饰符数据类型 this[索引类型 index]

 

  {

 

    get{//获得属性的代码}                                              

 

    set{ //设置属性的代码}

 

  }

其中 数据类型是数组的数据类型

例如:有一个Student类

 public  class Student     {   

     private  string[] name = new string[2];

   public string this[int index]   

   {    

      get { return name[index];}     

     set { name[index] = value;

}    

  }

如上代码所示,我们将数组设置为private,然后创建索引器,访问修饰符为Public

怎测试的代码如下:

 Student s = new Student();
            s[0] = "张三";
            s[1] = "李四";
            Console.WriteLine(s[1]);
            Console.ReadKey();

我们给student类实例化,然后不用调用他的数组,直接使用他的索引.

 

 

 

以上是我对C#中接口和索引器的认识

 

转载于:https://www.cnblogs.com/Bend215165709/p/3634804.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值