一、类

//
public class Base
{
//属性
public string name
{
get;
set;
}
public string type
{
get;
set;
}

//构造方法
public Base(string name, string type)
{
this.name = name;
this.type = type;
}
//重载
public Base()
{

}

public virtual string value()
{
return "";
}
}

类是具有相同属性和功能的对象的抽象的集合,一般里面含有属性和方法,其中构造方法是在实例化对象是启用,默认有一个不带任何参数的构造方法。类中相同方法名,不同参数的方法叫做方法重载。

修饰符public表示所有类都可以访问,private表示只有同一类能访问,protected表示只有同一类或继承类能访问。

二、继承

public class Child:Base
{
public string adj
{
get;
set;
}

public Child():base()
{

}
public Child(string name, string type)
:
base(name, type)
{

}
public override string value()
{
return name + " is a " + adj + " " + type;
}
}

继承的类拥有父类除private外的所有属性和方法,同时可以拥有自己的属性和方法。但对于构造方法只能被调用,不能被继承,调用时用base关键字。

三、多态

Base chi = new Child("liu wei", "people");
Response.Write(chi.value());

主要体现为对父类虚方法(virtual)的重写(override),具体如何使用,主要用来解决方法的可重用性。

四、抽象类、抽象方法和接口

如果类中包含抽象方法,则类必须是抽象类;继承抽象类必须实现抽象方法,但可以不实现其他抽象成员;继承可以看作是抽象方法的集合,因此只能完全实现;一个类可以继承一个抽象类和多个接口;抽象类针对的是对象,但接口针对的是行为。

五、委托

//声明委托
public delegate string GetName(string name);
public class Delegate
{
//两个与委托参数名,返回名相同的方法
public string name(string name)
{
return name;
}
public string NAME(string name)
{
return name.ToUpper();
}

public void test(string name,GetName get)
{
get(name);
}
}

studyClassLibrary.Designer.Delegate deleg = new studyClassLibrary.Designer.Delegate();
//实例化委托
GetName getN = new GetName(deleg.name);
//等价于
//GetName getN = new GetName();
//getN += deleg.name;

//添加方法
getN += deleg.NAME;
//删除方法
getN -= deleg.name;
//调用委托,依次执行方法
getN("haha");
//等价于 deleg.test("haha", getN);

由此可见,委托可以看做一个方法的列表,当调用时依次执行其中的方法。它的作用在于可以将方法列表当做参数传入方法,使得程序有更好的扩展性。

六、事件

public class Base
{
//声明委托
public delegate string test();
//声明事件,类型为委托
public event test testevent;
public string strtestevent()
{
if (testevent != null)
{
//当执行strtestevent方法时,若testevent不为空,则执行
return testevent();
}
}

}
public class Child
{
public string strSmallChild()
{
return "small";
}
public string strBigChild()
{
return "big";
}
}
Base ba = new Base();
Child chi
=new Child();
//对事件加入方法
ba.testevent += chi.strBigChild();
ba.testevent
+= chi.strSmallChild();
//执行调用事件的方法,此时会触发strBigChild(),strSmallChild()方法
ba.strtestevent();
由此可见,事件是一个特殊的委托,它可以用来表示当某一方法执行时触发一委托执行,即触发一系列的方法执行。要注意的是,单独的委托可以写在类外面,但事件只能写在类里面。
posted on 2011-03-10 21:53  长风一剑  阅读(249)  评论(0编辑  收藏  举报