zoukankan      html  css  js  c++  java
  • C#学习笔记(六)抽象类 访问限制关键字 委托 事件

    第二十九讲 抽象类

    抽象类:专门用于继承的类
    1.声明一个抽象类使用abstract关键字
    2.一个抽象类中可以包含几个抽象方法。也使用abstract
    3.抽象类中可以存在非抽象的方法
    4.抽象类不能被直接被实例化

    覆盖父类中的抽象方法 override

    代码部分

    private void Form1_Load(object sender,
    EventArgs e) {
    //抽象类不能实类化
    //Person theStudent = new Person();

    Person theStudent = new Student();
    theStudent.SayHello();
    theStudent.about();
    //*/
    }

    }
    public abstract class Person
    {
    public abstract void SayHello();
    public void about( ){MessageBox.Show("我是一
    个人!!");}
    }
    public class Student:Person
    {
    public override void SayHello() {
    MessageBox.Show("Hello!!");
    }
    }

    第三十讲 访问限制关键字

    类成员的访问关键字
    public: 访问不受限制
    private:只有所在类可以使用
    protected:仅限于类或派生类使用、
    internal:仅限于当前程序集
    protected internal:仅限于当前程序及或从派生类

    一般用.dll格式的出现

    第三十一讲 所有类的父类 object

    object也有成员方法,最具代表性的是ToString()
    包括基本数据类型:int string,bool等

    Person thePerson = new Person();
    this.textBox1.Text =
    thePerson.ToString();//将类的名字打印出来

    public class Person {
    string name = "wo ";
    /*public override string ToString() {
    return name;
    }
    //*/
    }

    第三十二讲 委托

    关于委托的几种说法:
    1.委托是一种类型。但是委托定义了方法的类型。
    2.这样,把方法作为参数进行传递成为可能

    delegate void GreetingDelegate(string name);
    void EnglishGreeting(string name);
    void ChineseGreeting(string name);

    委托链:

    委托不同于string的一个特性:可以将多个方法捆绑到同一个委托对
    象上,形成委托链,当调用这个委托对象的时候,将一次调用委托链
    中的方法。有批处理的效果

    代码部分:(需要好好看)

    namespace _234 {
    public delegate void GreetingDelegate(string name);
    public partial class Form1 : Form {
    public Form1() {
    InitializeComponent();
    }
    private void GreetPeople(string name,
    GreetingDelegate MakeGreeting) {
    MakeGreeting(name);
    }
    private void EnglishGreeting(string name) {
    MessageBox.Show("Morning" + name);
    }
    private void ChineseGreeting(string name) {
    MessageBox.Show("早上好" + name);
    }


    private void Form1_Load(object sender,
    EventArgs e) {
    /*
    GreetPeople("ouxiang",
    EnglishGreeting);
    GreetPeople("偶像",
    ChineseGreeting);
    //*/
    //GreetingDelegate delegate1 = new
    GreetingDelegate( );
    GreetingDelegate delegate1 = new
    GreetingDelegate(EnglishGreeting);
    delegate1 = ChineseGreeting;
    delegate1 += EnglishGreeting;
    delegate1 += ChineseGreeting;
    delegate1("zhang节");
    }


    }

    }

    第三十三节 事件

    1.委托是一种自定义的类型。委托定义了方法的类型。

    2.事件是委托的实例,使用委托实例的委托链注册一些方法。使用+=
    注册,-=撤销

    3.当时间发生的时候,调用委托链中的这些方法。不妨称这些方法为
    事件处理函数。

    using Delegate;


    namespace _234 {
    public delegate void GreetingDelegate(string name);
    public partial class Form1 : Form {
    public Form1() {
    InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e) {
    Heater heater = new Heater();
    Alarm alarm = new Alarm();
    Display display = new Display();
    heater.BoilEvent += alarm.MakeAlert; //注册方法
    heater.BoilEvent += alarm.MakeAlert; //注册方法
    heater.BoilEvent += display.ShowMsg; //注册方法
    heater.BoilWater(); //烧水,温度达到99时触发事件
    }


    }

    }
    namespace Delegate {
    //热水器类
    public class Heater {
    private int temperature = 0; //声明成员变量
    public delegate void BoilHandler(int param); //声明委托
    public event BoilHandler BoilEvent; //声明事件
    //烧水方法
    public void BoilWater() {
    for(int i=1; i<=100; i++){
    temperature++;
    if (temperature >= 99 && BoilEvent != null) {
    BoilEvent(temperature); //调用所有注册的方法
    }
    }
    }

    }
    //警报器类
    public class Alarm {
    public void MakeAlert(int param) {
    MessageBox.Show("响铃:滴滴滴,谁开了,度数为:" + param.ToString());
    }
    }
    //显示器类
    public class Display {
    public void ShowMsg(int param) {
    MessageBox.Show("显示当前温度为:" + param.ToString());
    }

    }
    }

  • 相关阅读:
    Java中的几种常用循环 for switch while dowhile
    HTML的各种基本标签
    2017年终总结
    HTML C# ajax结合ashx处理程序实现文件上传
    HTML div鼠标悬停控制子控件显示与隐藏
    HTML 使用CSS 如何去掉文本聚焦框
    HTML input 文本框如何添加提示信息
    CSS 如何通过top left 定位控制div在另一个div的位置
    CSS background 属性
    php支付接口开发-支付宝-开发前期准备
  • 原文地址:https://www.cnblogs.com/cheshui/p/2365228.html
Copyright © 2011-2022 走看看