抽象类的定义
抽象类的用途是提供多个派生类可共享的基类的公共定义,并使用abstract关键字定义。abstract不仅可以创建继承用途的类,也可以定义类成员。即定义派生的非抽象类的功能。
abstract class Class1 { }
抽象类的用途和接口很相似,也是不能实例化的。但是抽象类可以定义方法的实现。可以把抽象类看作是接口和普通类的结合。
抽象方法的定义
抽象方法的定义在所定义的方法前面加abstract,抽象成员不能是私有的,定义方法如下:
abstract public void SayHello();
抽象方法没有实现所以,方法定义后面加分号。
抽象类的派生类必须实现所有抽象方法:代码如下
namespace 抽象类的派生类 { class Program { static void Main(string[] args) { Class3 class3=new Class3(); class3.SayHello(); Console.ReadLine(); } } /// <summary> /// 抽象类Class2 /// </summary> public abstract class Class2 { /// <summary> /// 抽象方法SayHello /// </summary> abstract public void SayHello(); /// <summary> /// 抽象属性Hello /// </summary> abstract public string Hello { get; set; } } ///创建类Class3来实现抽象方法¨ class Class3 : Class2 { public override void SayHello() { Console.WriteLine(Hello); } /// <summary> /// Hello属性及实现
/// </summary> public override string Hello { get { return hello; } set { hello = value; } } string hello = "Hello World"; } }
在此例中,用到了override修饰符,类 Class3 必须提供 SayHello 的重写实现,因为 Class3 是从抽象的 Class2 继承而来的。
要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override 修饰符。