一、抽象类
(1) 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法
(2) 抽象类不能被实例化
(3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把
这个类声明为抽象类
(4) 具体派生类必须覆盖基类的抽象方法
(5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生
类必须覆盖它们。
如: using System;
public abstract class A //抽象类 A {
private int num=0;
public int Num //抽象类包含属性 {
get
{
return num; }
set
{
num = value; } }
public virtual int getNum() //抽象类包含虚方法 {
return num; }
public void setNum(int n) // //抽象类包含普通方法 {
this.num = n; }
publicabstractvoidE();//类 A 中的抽象方法 E
}
public abstract class B : A //由于类 B 继承了类 A 中的抽象方法 E,所以类 B 也变成了抽象类 {
}
public class C : B {
public override void E() //重写从类 A 继承的抽象方法。如果类 B 自己还定义了抽象方法,
也必须重写 {
//throw new Excep-on("The method or opera-on is not implemented."); } }
public class Test {
sta-c void Main()
{
C c = new C();
c.E(); } }
二、接 口
(1) 接口不能被实例化 (2) 接口只能包含方法声明
(3) 接口的成员包括方法、属性、索引器、事件
(4) 接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员。
如: public delegate void EventHandler(object sender, Event e);