对C#中接口的认识
简单的说接口是为了约束方法的格式(参数和返回值类型)而存在的 。但是注意:
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#中接口和索引器的认识