C#进阶学习第七天

1.接口

对一组方法声明进行统一的命名管理,(不同类型出现相同方法时)
1.通过关键字 interface修饰
2.接口中的方法没有访问修饰符,默认为公有,没有函数体
3.一个类不允许多重继承,但可以继承多个接口
4.定义方法,属性,事件,索引器 不能包含字段,运算符重载,实例构造函数,析构函数
5.接口中不能使用static关键字
6.继承接口的类必须实现接口所有的方法
7.父类中继承的接口成员可以继续继承给子类, 子类重写父类的接口方法,用new关键字覆盖方法

2.显示接口的实现方式

当多个接口包含的方法同名,返回类型和参数都一样的时候
如果一个类同时继承这些接口,隐式的接口出现命名冲突。

interface  Itake1{   void print (); }
interface  Itake2{   void print (); }
class C:Itake,Itake2
 {     void Itake1.print()  { Console.WriteLine ("take1"); }
       void Itake2.print()    { Console.WriteLine ("take2");}
 }
    C c1 = new C ();           注:实现方法时,在名前指定是哪个接口,不能加public任何修饰符 
	Itake1 itake  =  c1;          显示实现的成员默认私有,不能通过对象调用,要转换成对应的接口
	itake1.print ();              实现单个接口,通常使用隐式接口,对象可直接调用方法
      ((Itake2)c1).print ();      实现多个接口,通常使用显示接口

3.接口和抽象类的区别

   1.抽象类:abstract                      接口:interface   都不能实例化
   2.抽象类:包含虚方法,非抽象方法和静态成员  接口:不能包含虚方法和任何静态成员,只能定义方法不能实现
   3.抽象类:不能多继承                     接口:支持多继承
   4.抽象类:本质是类  IS - A  一种继承关系  接口:只是代表实现类具有接口声明的方法 CAN - DO 

4.委托

可以理解为函数的一个包装,把函数作为参数传递,相当于c++中的指针
规则:
1.方法的签名必须和委托一致,包括参数的个数,类型,顺序
2.方法的返回类型要和委托一致
步骤:
定义委托类型-声明委托变量-实例化委托-作为参数传递-调用委托

class Mainclass
 {       public delegate int dele (int a, int b);
	     public static void zong(dele  a,int x,int y)     //将委托作为参数传递
	       { Console.WriteLine (a (x, y));   }
         public static int add(int a, int b
           {  return a + b;  }
         public static int sub(int a, int b)    //静态方法
	       {  return a - b;  } 
         public  int mve(int a, int b)          //非静态方法
	       {  return a * b;  }              
   static void main()
      {
          Mainclass tm = new Mainclass();
          dele tt = add;  //dele tt = new dele(add);    两种赋值方法
          tt += sub;      //委托利用 + 可以封装多个方法,称为委托链技术,可添加重复的方法             
	      tt -= sub;      //委托利用  - 可以移除多个方法,从最后删,可以移除没有的方法,效果为无
          tt  += tm.mve;  //通途new出一个对象来添加非静态方法
          int a = tt (3, 4);       //委托链可以同时添加静态方法和非静态方法(通过对象调用)
	      Console.WriteLine (a);
          zong (tt, 2, 3);
      }
 }

猜你喜欢

转载自blog.csdn.net/JingDuiTell/article/details/88735229