面向对象——委托

简介: 面向对象——委托

概念:类似方法在内存中的首地址,但是它是类型安全的,明确知道方法的返回值类型和参数。可以这样理解:对方法的一个间接调用。定义了委托相当于定义了一个类。


格式:访问修饰符 关键字(delegate)  所指向方法的返回类型 委托的名字([形参]);


使用方式:委托的名字 委托对象 =  关键字(new ) 委托的名字(所指向方法的名字);


    委托对象([实参]);


委托的分类:单播委托,多播委托


单播委托:所指向方法的返回类型是具体的数据类型(如:int,short等);


多播委托:所指向方法的返回类型不是具体的数据类型,而是空(void);


tt.png

例:


public delegate void CallPoliceHander();//定义委托,用来指向事件发生时调用的方法。


   public class Car


   {

       public event CallPoliceHander OnCrach;//通过委托定义事件。


       public void Cracsh()


       {

           if (OnCrach != null)//事件发生了,如果不为空则表明事件发生了


           {

               OnCrach();//调用委托所引用的方法


           }


       }


   }


   public partial class Form1 : Form


   {

       public Form1()


       {

           InitializeComponent();


       }


       private void button1_Click(object sender, EventArgs e)


       {

           Car car = new Car();//创建对象


           car.OnCrach += new CallPoliceHander(car_OnCrach);


           car.Cracsh();


       }


       void car_OnCrach()


       {

           MessageBox.Show("已经通知警察了!");


       }


}


一个委托可以调用多个方法:


 public delegate void Print();//声明一个委托


   public partial class Form1 : Form


   {

       public Form1()


       {

           InitializeComponent();


       }


       private void button1_Click(object sender, EventArgs e)


       {

           Print p = new Print(PrintA);


           p += PrintC;


           p += PrintB;


           p();//调用委托所引用的方法。


       }


       private void PrintA()


       {

           MessageBox.Show("PrintA");


       }


       private void PrintB()


       {

           MessageBox.Show("PrintB");


       }


       private void PrintC()


       {

           MessageBox.Show("PrintC");


       }


   }


tt.png

目录
相关文章
|
3月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
算法 Java 编译器
类和面向对象
类和面向对象
110 0
|
设计模式
设计模式小例子理解封装、继承、多态
设计模式小例子理解封装、继承、多态
81 0
|
存储 算法 Java
面向对象编程实践:类、对象与继承
面向对象编程实践:类、对象与继承
63 0
|
设计模式 数据安全/隐私保护
面向对象编程基础:封装、继承、多态与抽象的全面解析
面向对象编程基础:封装、继承、多态与抽象的全面解析
221 0
|
Java
面向对象编程基础:类、对象、封装、继承和多态
面向对象编程基础:类、对象、封装、继承和多态
112 0
面向对象的封装,继承,多态(一)
面向对象的封装,继承,多态。
81 0
面向对象的封装,继承,多态(一)
|
Java
Java面向对象程序设计4继承与多态
Java面向对象程序设计4继承与多态
494 0
Java面向对象篇:封装、继承、多态(二)
Java面向对象篇:封装、继承、多态
Java面向对象篇:封装、继承、多态(二)