.net中的抽象方法

提到抽象我们首先就会想到C#中的3个关键词,virtual、abstract、override。下面逐一来讨论每一个关键字

virtual:虚方法,表示父类中的方法是虚拟的,没有真正意义上的实现,具体的实现可以交给子类去实现,但是这里面可以有父类的具体实现代码,主要用于子类中没

重写的时候就可以调用父类的方法。

父类的代码:

  class Person
    {
        public  int Age { get; set; }
        public  string Name { get; set; }
        //virtual为必须加的,虚方法存在的意义就是让子类重写
        public virtual void ShowNational() { } 
    }
子类要重写父类中的虚方法,需要用到override关键字
 class Chinese:Person
    {
        public void Hukou()
        {
            Console.WriteLine("中国");
        }
        public override void ShowNational() {
            Console.WriteLine("我是中国人");
        }

    }
重写和重载的区别:重写是子类去重新实现父类中没有具体实现的方法,而重载是在一个类中同样一个方法名形式参数不同的方法。
abstract:抽象。用在类名前表示该类是抽象类。抽象类中没有对抽象方法的具体实现代码,这些工作完全交给了子类去实现。这里和上面的虚方法不一样,这里绝对不可以有
实现的代码。
<pre name="code" class="csharp"> /// <summary>
    /// 因为父类中的抽象方法不会有任何作用,所以我们就不对他做任何操作,只需要在将该类变为抽象类abstract
    /// 并且在方法钱也得加abstract关键字
    /// </summary>
   abstract class Person
    {
        public int Age { get; set; }
        public string Name { get; set; }
        abstract public void ShowNational();  //这里没有{}
    }
子类重写父类的抽象方法

 
<pre name="code" class="csharp"> class Chinese : Person
    {
        public void Hukou()
        {
            Console.WriteLine("中国");
        }
        public override void ShowNational()
        {
            Console.WriteLine("我是中国人");
        }

    }
为什么我们要用抽象类呢?可以参考这篇文章,用java中的抽象类来说明的http://blog.youkuaiyun.com/zltpc007/article/details/1800534。
 
下一节将探讨一下多态



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值