社区
C#
帖子详情
虚函数跟抽象函数的用法及区别
gengchenhui
2011-03-14 11:36:35
RT,这个问题期待大家的回答,现在的编程还是面向实现,不过我想学习怎么面向抽象,面向接口编程。。。
ps:期待sp来回答,不过这个问题好像太宽泛了,不知道sp会不会来回答。。。
...全文
656
18
打赏
收藏
虚函数跟抽象函数的用法及区别
RT,这个问题期待大家的回答,现在的编程还是面向实现,不过我想学习怎么面向抽象,面向接口编程。。。 ps:期待sp来回答,不过这个问题好像太宽泛了,不知道sp会不会来回答。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Dobzhansky
2011-03-14
打赏
举报
回复
c++ 那边学习的时候 , 讲解实现时, 说到 的虚函数表机制挺能帮助理解的.
你自己不去搞明白, 何时也不明白.
触类旁通,
知识是融合来的, 不是孤立存在的.
热爱生活的老张
2011-03-14
打赏
举报
回复
[Quote=引用 2 楼 vrhero 的回复:]
啥叫虚函数?啥叫抽象函数?弄清楚这两个词你就明白了...
C#中的规则是...
虚方法可被任何派生类重写,此外没有任何限制...
而抽象方法是隐式的虚方法,是有限制的虚方法...1.不允许实现;2.只允许在抽象类中声明;3.必须通过派生类实现...
这个问题其实跟什么“面向抽象,面向接口”没多大关系,仅仅是语法层面的东西...如果非得讲的深刻点,那就是虚方法是预置可重配置件……
[/Quote]
学习了。呵呵
hztltgg
2011-03-14
打赏
举报
回复
[Quote=引用 5 楼 gengchenhui 的回复:]
引用 3 楼 hztltgg 的回复:
虚函数是有实现的并明确允许子类去覆盖,但子类也可不覆盖
抽象函数是没有实现的子类要是具体类,一定要实现
难道你没有实际开发经验?那单纯的数学里也有抽象的概念,形状类可以定义一个得到面积的抽象函数,派生的三角形类,圆形类等实现这个得到面积的函数。
不是没有开发经验,是现在都是面向实现,这些东西都没用过,不知道什么时候该用什么。
[/Quote]
这些都是多态的范畴,你在考虑具体实现不同而又想同样处理的时候就可以用了,比如,考试,有选择题,判断题,题目打分具体方式不同,在出卷的时候就不考虑这些不同,用个抽象的方法实现出题,判断等方法,这样生成试卷的时候就方便多了,具体的实现让具体的体型类去做
ZengJerry
2011-03-14
打赏
举报
回复
虚函数和抽象函数都可以在子类中被override
1.虚函数可以有默认的实现,在子类中可被override也可不需要override
2.抽象函数必须在子类中被实现
什么时候使用抽象方法、接口?接口应该是相对于抽象类来说的。
wanghui0380
2011-03-14
打赏
举报
回复
这问题没答案
主要看你在的位置,这个题要说一定要有个答案那就一句话“屁股决定脑袋”
你座在那张椅子上,就思考那个位置改干的事情,主要就是看你是制定规则的人,还是使用规则的人
vrhero
2011-03-14
打赏
举报
回复
[Quote=引用 2 楼 vrhero 的回复:]
虚方法是预置可重配置件,抽象方法只是个规格说明...
[/Quote]
你看不懂这句话?
你需要别人怎么做却不知道自己怎么做就用抽象方法,你知道自己怎么做也允许别人自己做就用虚方法...
比如DbConnection.Open方法是抽象方法,因为没人知道事先该干什么...而object.ToString方法是虚方法,因为什么都不做不好...
xiehuanxie
2011-03-14
打赏
举报
回复
有了Interface之后, 抽象函数应用得很少, 很少遇到必须用抽象方法的情况。
gengchenhui
2011-03-14
打赏
举报
回复
[Quote=引用 3 楼 hztltgg 的回复:]
虚函数是有实现的并明确允许子类去覆盖,但子类也可不覆盖
抽象函数是没有实现的子类要是具体类,一定要实现
难道你没有实际开发经验?那单纯的数学里也有抽象的概念,形状类可以定义一个得到面积的抽象函数,派生的三角形类,圆形类等实现这个得到面积的函数。
[/Quote]
不是没有开发经验,是现在都是面向实现,这些东西都没用过,不知道什么时候该用什么。
gengchenhui
2011-03-14
打赏
举报
回复
[Quote=引用 2 楼 vrhero 的回复:]
啥叫虚函数?啥叫抽象函数?弄清楚这两个词你就明白了...
C#中的规则是...
虚方法可被任何派生类重写,此外没有任何限制...
而抽象方法是隐式的虚方法,是有限制的虚方法...1.不允许实现;2.只允许在抽象类中声明;3.必须通过派生类实现...
这个问题其实跟什么“面向抽象,面向接口”没多大关系,仅仅是语法层面的东西...如果非得讲的深刻点,那就是虚方法是预置可重配置……
[/Quote]
那构思抽象类的时候什么时候用抽象方法,什么时候用虚方法呢?
hztltgg
2011-03-14
打赏
举报
回复
虚函数是有实现的并明确允许子类去覆盖,但子类也可不覆盖
抽象函数是没有实现的子类要是具体类,一定要实现
难道你没有实际开发经验?那单纯的数学里也有抽象的概念,形状类可以定义一个得到面积的抽象函数,派生的三角形类,圆形类等实现这个得到面积的函数。
vrhero
2011-03-14
打赏
举报
回复
啥叫虚函数?啥叫抽象函数?弄清楚这两个词你就明白了...
C#中的规则是...
虚方法可被任何派生类重写,此外没有任何限制...
而抽象方法是隐式的虚方法,是有限制的虚方法...1.不允许实现;2.只允许在抽象类中声明;3.必须通过派生类实现...
这个问题其实跟什么“面向抽象,面向接口”没多大关系,仅仅是语法层面的东西...如果非得讲的深刻点,那就是虚方法是预置可重配置件,抽象方法只是个规格说明...
gengchenhui
2011-03-14
打赏
举报
回复
没人来回答啊?
IE11下面经常卡到爆
2011-03-14
打赏
举报
回复
[Quote=引用 3 楼 hztltgg 的回复:]
虚函数是有实现的并明确允许子类去覆盖,但子类也可不覆盖
抽象函数是没有实现的子类要是具体类,一定要实现
难道你没有实际开发经验?那单纯的数学里也有抽象的概念,形状类可以定义一个得到面积的抽象函数,派生的三角形类,圆形类等实现这个得到面积的函数。
[/Quote]
学习面向对象可以先抛开语法层面的东西,结合现实理解原理层的东西,还有UML也很重要,接着你应该可以做一些简单的设计,不然很有可能越来越迷惑
友林
2011-03-14
打赏
举报
回复
为啥要有面向对象,为啥要面向接口编程,为啥要对扩展开放,对修改关闭。其实都是为了规范,正所谓没有规矩不成方圆,不要大家都乱糟糟的各写各的代码。
友林
2011-03-14
打赏
举报
回复
问题不简单,就是太泛了,有些知识还是多看看书。
比如设计模式方面的。
gengchenhui
2011-03-14
打赏
举报
回复
看来是我问的问题太简单了。。。
复现基于改进扩散模型的高海拔地区新能源高波动出力场景生成方法(Python代码实现)
内容概要:本文提出了一种基于改进扩散模型的高海拔地区新能源高波动出力场景生成方法,并提供了完整的Python代码实现。该方法针对高海拔地区风能、光伏等新能源出力波动剧烈、不确定性高的特点,通过优化扩散模型的结构与训练策略,有效捕捉历史数据的概率分布特征与时序相关性,从而生成高质量、多样化的出力场景。文中详细阐述了模型的数学推导、网络架构设计、损失
函数
优化及采样算法改进,并通过实验证明其在拟合精度、场景多样性与稳定性方面优于传统生成模型,为电力系统在高比例新能源接入下的规划、调度与风险评估提供了可靠的场景输入支持。; 适合人群:具备一定Python编程能力和机器学习基础,从事新能源发电预测、电力系统分析、智能优化、场景生成等方向研究的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①用于高海拔地区风电、光伏出力的不确定性建模与多场景生成;②支撑含高渗透率新能源的电力系统随机优化调度、鲁棒决策与风险评估;③为相关学术研究、论文复现与算法改进提供可运行的技术方案与代码基础; 阅读建议:建议读者结合所提供的完整资源(代码、数据集、说明文档)进行实践操作,重点关注扩散模型的前向加噪与反向去噪过程的设计细节,以及如何将其适配于新能源时序数据的生成任务,通过参数调优与对比实验深入理解模型的生成机制与性能边界。
复现计及风电不确定性的电力系统黑启动恢复模型(Matlab代码实现)
内容概要:本文档提供了多个电力系统及相关领域的Matlab和Python代码实现资源,重点聚焦于“计及风电不确定性的电力系统黑启动恢复模型”的复现研究。该模型针对高比例新能源接入背景下,风电出力波动性和不确定性对电力系统恢复过程的影响,构建了考虑不确定因素的黑启动优化恢复框架,并通过Matlab编程实现仿真验证,旨在提升新型电力系统在故障后的快速、可靠恢复能力。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事电力系统规划与运行工作的技术人员。; 使用场景及目标:①用于学习和复现含风电的电力系统黑启动恢复策略;②开展考虑新能源不确定性的电力系统恢复力(resilience)研究;③作为相关课题的算法开发与仿真验证参考; 阅读建议:建议结合电力系统恢复、随机优化或鲁棒优化等相关理论文献,深入理解模型构建逻辑,并利用提供的代码进行调试与案例分析,进一步拓展至其他不确定性场景或系统结构的研究。
【静态约束法】配电网电动汽车接入容量评估研究(Matlab代码实现)
内容概要:本文围绕基于静态约束法的配电网电动汽车接入容量评估展开研究,提出了一种在新型电力系统背景下评估主动配电网对电动汽车承载能力的方法。研究通过构建数学模型,结合潮流计算与关键约束条件(如电压越限、线路过载等),量化分析配电网可承受的最大电动汽车充电负荷容量,旨在识别规模化电动汽车接入带来的潜在运行风险,并为电网规划与运行提供科学依据。文中配套提供了完整的Matlab代码实现,便于仿真验证与结果复现。此外,该研究与分布式光伏承载力评估、电动汽车可调能力分析等方向形成技术联动,展现了多主题协同的研究体系。; 适合人群:具备电力系统分析基础理论知识及Matlab编程能力的高校研究生、科研机构研究人员,以及从事新能源并网、智能配电网规划与运行等相关领域的工程技术人员。; 使用场景及目标:①用于学术研究中的模型复现与论文撰写支撑;②评估实际配电网中电动汽车大规模接入的可行性与安全边界,指导充电基础设施布局;③作为高校教学案例,帮助学生深入理解电网承载力评估的核心原理、建模方法与仿真技术; 阅读建议:建议结合文中提及的相关研究方向(如二阶锥规划、多面体聚合方法等)进行对比学习,充分利用所提供的Matlab代码与网盘资料开展仿真实验,重点关注约束条件的设定逻辑与潮流计算模块的实现细节,以深化对评估模型机理与工程应用价值的理解。
C#
111,130
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章