abstract是什么意思
2023-06-30
abstract 修饰符可以用于类、方法、属性、事件和索引指示器(indexer),表示其为抽象成员
abstract 不可以和 static 、virtual 一起使用
声明为 abstract 成员可以不包括实现代码,但只要类中还有未实现的抽象成员(即抽象类),那么它的对象就不能被实例化,通常用于强制继承类必须实现某一成员
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example04
#region 基类,抽象类
public abstract class BaseClass
//抽象属性,同时具有get和set访问器表示继承类必须将该属性实现为可读写
public abstract String Attribute
get;
set;
//抽象方法,传入一个字符串参数无返回值
public abstract void Function(String value);
//抽象事件,类型为系统预定义的代理(delegate):EventHandler
public abstract event EventHandler Event;
//抽象索引指示器,只具有get访问器表示继承类必须将该索引指示器实现为只读
public abstract Char this[int Index]
get;
#endregion
#region 继承类
public class DeriveClass : BaseClass
private String attribute;
public override String Attribute
get
return attribute;
set
attribute = value;
public override void Function(String value)
attribute = value;
if (Event != null)
Event(this, new EventArgs());
public override event EventHandler Event;
public override Char this[int Index]
get
return attribute[Index];
#endregion
class Program
static void OnFunction(object sender, EventArgs e)
for (int i = 0; i < ((DeriveClass)sender).Attribute.Length; i++)
Console.WriteLine(((DeriveClass)sender)[i]);
static void Main(string[] args)
DeriveClass tmpObj = new DeriveClass();
tmpObj.Attribute = “1234567″;
Console.WriteLine(tmpObj.Attribute);
//将静态函数OnFunction与tmpObj对象的Event事件进行关联
tmpObj.Event += new EventHandler(OnFunction);
tmpObj.Function(“7654321″);
Console.ReadLine();
结果:
1234567
7
6
5
4
3
2
1