参考:http://www.microsoftvirtualacademy.com/Content/ViewContent.aspx?et=9851&m=9838&ct=31054

如有错误,欢迎指正。

主要区别:

对于抽象方法,子类必须实现它。

对于虚拟方法,子类可以重写也可以不重写。

两者约束不同

下面贴代码

 /* 声明一个抽象类
     * 1.抽象类中可以包含变量
     * 2.抽象方法中无法声明方法体
     */
    abstract class AbsClass
    {           string name;
        public abstract void DisplayValue(string value);
    }

    /*继承抽象类的子类必须实现抽象方法*/
    class AbsClassInherited : AbsClass
    {
        /*使用override重写实现*/
        public override void DisplayValue(string value)
        {
            Console.WriteLine(value.ToUpper());
        }
    }
     /* 声明虚拟函数
      */
    class VirtClass
    {
        /*声明一个虚拟函数
         虚拟函数必须实现方法体*/
        public virtual void DisplayValue(string value)
        {
            Console.WriteLine(value);
        }
    }
    /*虚拟方法可以实现也可以不实现*/
    class VirtClassInherited : VirtClass
    {
        /*使用override重写实现*/
        public override void DisplayValue(string value)
        {
            Console.WriteLine(value.ToUpper());
        }
    }

    /* 声明一个接口
     * 1.接口中的方法必须是公用的
     * 2.接口中不允许有变量
     * 3.接口中的方法不允许有方法体
     */
    interface IAbs
    {
        void DisplayValue(string value);
    }

随机推荐

  1. SQLite 事务

    SQLite数据库是支持事务的,事务的特性可以保证让一系列的操作要么全部完成要么一个都不会完成. 一.调用SQLDatabase的beginTransaction()开起一个事务,当事务处理完成,调用 ...

  2. 必备技能:分清楚DOM的attribute和property

    分清楚DOM的attribute和property,用JQ的时候分清楚attr,和prop方法,网上有很多大神的总结,我就不列举了.

  3. mongo

    最近一直在用mongodb,有时候会需要用到统计,在网上查了一些资料,最适合用的就是用aggregate,以下介绍一下自己运用的心得.. 别人写过的我就不过多描述了,大家一搜能搜索到N多一样的,我写一 ...

  4. MongoDB-JAVA-Driver 3.2版本常用代码全整理(3) - 聚合

    MongoDB的3.x版本Java驱动相对2.x做了全新的设计,类库和使用方法上有很大区别.例如用Document替换BasicDBObject.通过Builders类构建Bson替代直接输入$命令等 ...

  5. C/C++/Qt 统计运行时间

    http://www.cnblogs.com/Romi/archive/2012/04/19/2457175.html 程序中经常需要统计时间,需要统计某项运算的运行时间时,需要计算时间差. 1. C ...

  6. NBU7.0 Image Cleanup作业在没有配置hot catalog backup的情况下失败,Status=1

    Issue NBU7.0 Image Cleanup作业在没有配置hot catalog backup的情况下失败,Status=1 Error NBU7.0 Image Cleanup作业失败, D ...

  7. simpleBLEPeripheral.c 文件分析

    这个配置或者说任务, 让这个蓝牙设备成为了一个简单的BLE外设. 这里定义了外设的广播数据, 以及最重要, char被改变之后的回调, 引出后来的coreHandler里面的, ack 以及写e2pr ...

  8. python网络编程socket之多线程

    #coding:utf-8 __author__ = 'similarface' import os,socket,threading,SocketServer SERVER_HOST='localh ...

  9. 11个Linux基础面试问题

    Q.1: Linux 操作系统的核心是什么? Shell Kernel Command Script Terminal 答: 内核(Kernel)是Linux 操作系统的核心.Shell是一个命令行解 ...

  10. float和CGFloat混用的风险

    一般意义上的混用是没有问题的, 比如 float x=5.0; (void)printNumber:(CGFloat)number; 当调用printNumber:x的时候是没有问题的 但是如果使用f ...