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());
}

}
}

posted @ 2012-02-23 17:40  51秒懂  阅读(371)  评论(0编辑  收藏  举报