社区
C#
帖子详情
抽象类不能实例化的根本原因是什么?不应该是有抽象方法就不能实例化了
shou_ji_dang
2011-10-18 08:45:25
抽象类不能实例化是因为抽象类里有没有实现的方法,这个理由很牵强。抽象类不是必须有抽象方法,抽象方法则必须放在抽象类里。反编译发现抽象类默认无参构造函数是保护的,但设置成公有的还是无法实例化(抽象类里没有抽象方法),而且不能有抽象构造函数或抽象静态方法。为什么要这样设置?不能实例化还要默认保护的无参构造函数干什么?
...全文
1593
11
打赏
收藏
抽象类不能实例化的根本原因是什么?不应该是有抽象方法就不能实例化了
抽象类不能实例化是因为抽象类里有没有实现的方法,这个理由很牵强。抽象类不是必须有抽象方法,抽象方法则必须放在抽象类里。反编译发现抽象类默认无参构造函数是保护的,但设置成公有的还是无法实例化(抽象类里没有抽象方法),而且不能有抽象构造函数或抽象静态方法。为什么要这样设置?不能实例化还要默认保护的无参构造函数干什么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
showjim
2011-10-18
打赏
举报
回复
抽象说明是缺少细节的,是不完整的。
默认保护的无参构造函数,应该是给编译器调用的,为了在实现层面上与其它类没有差异,简化了设计。
静态继承,确实是个问题,比如我个人的应用经常会碰到这个问题。我认为是.net开发组在这个问题上偷懒造成的,可能他们认为你把静态改成动态不就行了,只是感觉不优雅。
IE11下面经常卡到爆
2011-10-18
打赏
举报
回复
从面向对象设计来讲,抽象类是从一堆有某种共性的具体子类中抽象出来的,它代表的是这一类事物,而非具体的某一个
就像人和LZ的关系一样
shou_ji_dang
2011-10-18
打赏
举报
回复
[Quote=引用 6 楼 findcaiyzh 的回复:]
实例化后调用了abstract函数怎么办。它没有实现。
[/Quote]
即使没有写抽象函数还是被阉割掉了可能存在的这种风险,C#把危险降到很低很低
idaydayup
2011-10-18
打赏
举报
回复
[Quote=引用 5 楼 shou_ji_dang 的回复:]
引用 4 楼 gengchenhui 的回复:
我觉得是这样,举个例子:张三是个人,人是动物,这里面张三是对象,人是类,动物就是个抽象类,你怎么去实例化一个动物?让他长成什么样?
我是这样理解面向对象的,跟现实生活联系起来。
很有道理,这种东西不能用语法考虑。三大特征必须联系生活才行。就好比静态成员可以当成一个家庭的财产,会一辈辈传下去,除非晚辈们重新有了新财产(隐藏了老辈们的财产)。……
[/Quote]
好乱 呵呵,确实要结合实际来思考 很多东西跟现实结合起来思考就会发现是对的.否则就想不通
宝_爸
2011-10-18
打赏
举报
回复
实例化后调用了abstract函数怎么办。它没有实现。
shou_ji_dang
2011-10-18
打赏
举报
回复
[Quote=引用 4 楼 gengchenhui 的回复:]
我觉得是这样,举个例子:张三是个人,人是动物,这里面张三是对象,人是类,动物就是个抽象类,你怎么去实例化一个动物?让他长成什么样?
我是这样理解面向对象的,跟现实生活联系起来。
[/Quote]
很有道理,这种东西不能用语法考虑。三大特征必须联系生活才行。就好比静态成员可以当成一个家庭的财产,会一辈辈传下去,除非晚辈们重新有了新财产(隐藏了老辈们的财产)。而非静态的就好比家庭成员的财产,只有家庭有这个成员才会有这份财产。不知道这么理解对不对?
gengchenhui
2011-10-18
打赏
举报
回复
我觉得是这样,举个例子:张三是个人,人是动物,这里面张三是对象,人是类,动物就是个抽象类,你怎么去实例化一个动物?让他长成什么样?
我是这样理解面向对象的,跟现实生活联系起来。
shou_ji_dang
2011-10-18
打赏
举报
回复
[Quote=引用 2 楼 wanghui0380 的回复:]
晕,还真能追,可惜追错方向了
思想决定手段,而非手段决定思想
抽象类不能实例化,是因为微软想把做成这样。
而不是莫个程序员对构造函数写了保护,于是微软说这样挺好,以后就这样办了
[/Quote]
这个我也想过,我觉得C#把许多可能出错的功能阉割掉了,静态类不能继承静态类我觉得有时是可以的,但C#为了防止有实例类继承静态类,直接让静态类不能派生也不能继承了,让静态类完全独立出来,只继承于Object。我只是怕自己理解错了,想看看大神们的想法是否相同。
wanghui0380
2011-10-18
打赏
举报
回复
晕,还真能追,可惜追错方向了
思想决定手段,而非手段决定思想
抽象类不能实例化,是因为微软想把做成这样。
而不是莫个程序员对构造函数写了保护,于是微软说这样挺好,以后就这样办了
bdmh
2011-10-18
打赏
举报
回复
理解为规定即可,当你主宰编译器后,你可以决定是否让实例化
shou_ji_dang
2011-10-18
打赏
举报
回复
[Quote=引用 10 楼 sbwwkmyd 的回复:]
抽象说明是缺少细节的,是不完整的。
默认保护的无参构造函数,应该是给编译器调用的,为了在实现层面上与其它类没有差异,简化了设计。
静态继承,确实是个问题,比如我个人的应用经常会碰到这个问题。我认为是.net开发组在这个问题上偷懒造成的,可能他们认为你把静态改成动态不就行了,只是感觉不优雅。
[/Quote]
确实是这个问题,他们只是想减少麻烦,把整个静态类全部孤立起来,避免了讨论静态类继承实例类或者实例类继承静态类的麻烦,o(︶︿︶)o 唉,阉掉了
学堂在线C语言程序设计2016春季课程助教维护项目_包含CppTech每周技术文章拓展视野_DBF存放有趣程序_FAQ定期总结讨论区精华_Handout提供课程讲义markdo.zip
学堂在线C语言程序设计2016春季课程助教维护项目_包含CppTech每周技术文章拓展视野_DBF存放有趣程序_FAQ定期总结讨论区精华_Handout提供课程讲义markdo.zip
基于Java_Swing和AWT图形界面库开发的交互式图片拼图游戏项目_支持多难度级别选择与背景音乐播放的益智类桌面应用程序_通过鼠标点击操作实现拼图块的移动与自动补位机制_旨在为.zip
基于Java_Swing和AWT图形界面库开发的交互式图片拼图游戏项目_支持多难度级别选择与背景音乐播放的益智类桌面应用程序_通过鼠标点击操作实现拼图块的移动与自动补位机制_旨在为.zip
FS32K144、s32k1引脚定义64、100、144、176脚都有
车用mcu,找了一圈网上少。找到放一个
【汽车电子通信】基于DDS与Ethernet的SOA架构仿真测试:SOME/IP与gPTP协议集成分析系统设计
内容概要:本文介绍了DDS(Data Distribution Service)、SOME/IP、gPTP等汽车电子通信协议的基本原理及其在车载网络中的应用,重点阐述了DDS的分布式数据通信机制、SOME/IP在面向服务架构(SOA)中的实现方式以及gPTP在时间同步中的作用。同时,文档展示了如何利用CANoe工具对这些协议进行仿真、分析与测试,涵盖从IDL建模、QoS配置到实际网络行为验证的完整流程,并提供了在AUTOSAR环境下的集成方案和技术支持能力。; 适合人群:从事汽车电子系统开发、车载网络架构设计及相关测试工作的工程师,具备一定嵌入式系统或通信协议基础的研发人员;; 使用场景及目标:①理解DDS与SOME/IP在车载SOA架构中的差异与应用场景;②掌握基于CANoe平台进行DDS、SOME/IP及gPTP协议仿真与测试的方法;③实现高精度时间同步系统(如ADAS)的设计与验证; 阅读建议:此资料适用于实际项目开发参考,建议结合CANoe、vTESTstudio等工具实践操作,重点关注IDL/vCDL建模、QoS参数配置及协议交互时序分析,以深入理解各协议在复杂车载环境中的行为特性。
基于Spring框架与ELK技术栈构建的分布式系统可观测性工具_统一标准与工具集_生成收集处理导出追踪指标日志数据_实现全面系统监控与性能分析_Spring_ELK_分布式追踪_指.zip
基于Spring框架与ELK技术栈构建的分布式系统可观测性工具_统一标准与工具集_生成收集处理导出追踪指标日志数据_实现全面系统监控与性能分析_Spring_ELK_分布式追踪_指.zip
C#
111,112
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章