一、类
//类
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();