C#虚方法和抽象方法的区别
发布日期:2021-11-09 22:51:07 浏览次数:49 分类:技术文章

本文共 1780 字,大约阅读时间需要 5 分钟。

一,如下例子

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DemoTest{    class Program    {        static void Main(string[] args)        {            B a = new B();        }    }    public class A    {        public A()        {            Say();        }        protected virtual void Say() {            Console.WriteLine("A");        }    }    public class B : A    {        protected override void Say()        {            Console.Write("B");        }    }}

结果:

 

输出的则是B

二,通过调试得出结论:

当B继承A时,并重写A中的方法,程序运行的时只会进入到B中重写的方法Say(),而不会进入A中的Say()

三,抽象方法和虚方法的区别

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace abstractOrvirtual{    class Program    {        static void Main(string[] args)        {            AbstractDemo ab = new Test();            ab.AbstractEvent();            ab.VirtualEvent();            ab.VirtualEvent2();        }    }    public abstract class AbstractDemo    {        public abstract void AbstractEvent();        //public abstract void AbstractEvent2()   //无法声明主体,因为它标记为 abstract        //{        //    Console.WriteLine("抽象方法");        //}        public virtual void VirtualEvent()        {            Console.WriteLine("虚方法");        }        public virtual void VirtualEvent2()        {            Console.WriteLine("虚方法");        }        // public virtual void VirtualEvent2();必须声明主体,因为它未标记为 abstract、extern 或 partial    }    public class Test : AbstractDemo    {        public override void AbstractEvent()  //抽象方法可以被重写        {            Console.WriteLine("抽象方法");        }        public virtual void VirtualEvent2()//虚方法可以被重写        {            Console.WriteLine("虚方法2");        }    }}

 

转载于:https://www.cnblogs.com/May-day/p/6724021.html

转载地址:https://blog.csdn.net/dcujcivw769565/article/details/101260397 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C#log4net的使用
下一篇:MVC:页面提交JQ动态生成的输入框的值得解决方案:

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月25日 04时03分35秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

嵌入式linux 设置时间,time_clock控件应用,使用命令date -s 12:00:00手动设置时间后,时间就停住不走了,我在Ubuntu和嵌入式Linux平台都测试到了... 2019-04-21
linux 8086下编译,Ubuntu18.04/Linux下安装DosBox进行8086汇编 2019-04-21
linux监控windows,zabbix监控之linux及windows客户端安装配置 2019-04-21
linux中怎么卸载tree,Liunx系统命令中tree命令详解 2019-04-21
linux 网络音箱 混音6,Linux音频编程(三)混音器介绍 2019-04-21
node与mysql开源_node与mysql的相互使用————node+mysql 2019-04-21
python合并列表重新排序_python – 将两个已排序的列表合并为一个更大的排序列表... 2019-04-21
vbs用mysql语句查询数据库_vbs脚本实现window环境下的mysql数据库的备份及删除早期备份... 2019-04-21
mysql连接nginx_nginx四层负载均衡连接mysql 2019-04-21
mysql截取栏目字符_substring从指定字符串开始截取(图) 2019-04-21
python 函数参数前面两个星号_Python中参数前面一个星号两个星号(*参数,**参数)起什么作用呢?... 2019-04-21
python类属性初始化_Python类定义、属性、初始化和析构 2019-04-21
mysql构建url给scrapy_Python Scrapy从mysq填充起始url 2019-04-21
owdcloud mysql_MySQL在Ubuntu远程配置 2019-04-21
python基础装饰器_Python基础 装饰器及练习 2019-04-21
python导出csv不带引号的句子_不带双引号写入CSV文件 2019-04-21
python爬虫代码模板_Python:学习Python爬虫的第一天 2019-04-21
springboot获取原生js请求_springboot跳转原生html 2019-04-21
java buffer nio_Java NIO之Buffer(缓冲区)入门 2019-04-21
android java加密_android 和java平台通用的AES加密解密 2019-04-21