class Program
{
static void Main(string[] args)
{
/*在我们定义类的时候,如果我们想让一个类作为存放所有子类的公共成员的一个类(一般情况下不允许在创建该类的实例),我们可以将这个类定义为一个
抽象类。
* abstract class ClassName{}
* 不能创建抽象类的实例
*基类的抽象或者非抽象是非常有用的,基类中包含了所有的通用数据和功能。
*虽然我们不能直接的创建抽象类的实例,但是在创建派生类的实例的时候依然会为这些公用成员分配内存,定义一些在分配派生类时
*间接调用的构造函数是很正常的。
*/
Console.ReadKey();
}
}
//抽象类 工单类
abstract class Case
{
//默认的构造函数
public Case()
{
}
//指定工单名称的构造函数
public Case(string cName)
{
CaseName = cName;
}
/// <summary>
/// 工单名称
/// </summary>
public string CaseName { get; set; }
//如果需要强制每一个派生类都必须重写 父类中的某个方法,就在父类中的该方法前加 abstract关键字,
//需要注意的是:抽象方法不能声明主体,并且抽象方法只能出现在抽象类当中(如果你想要定义一个没有默认实现并且必须在每一个派生类中实现的成员时
//可以使用抽象成员)
//抽象基类的多态接口是指一组虚的或这抽象的方法。
//抽象方法必须被子类重写
public abstract void CreateCaseID();//
public virtual void CreateCaseName()
{
Console.WriteLine("Case:This is a Virtual Method!");
}
}
//派生类 子工单类
class SubCase : Case
{
SubCase()
{
}
SubCase(string cName)
: base(cName)//在这里 在调用子类SubCase的构造函数之前 会先调用父类当中的构造函数,此处通过使用 base关键字 指定了父类中的构造函数。
{
}
public override void CreateCaseID()
{
Console.WriteLine("SubCase:This is a Override Method!");
}
}
黑马程序员_抽象类的学习
最新推荐文章于 2015-09-18 16:18:47 发布