黑马程序员_抽象类的学习

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!");
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值