什么情况下需要用到虚拟类?

yibin2006 2007-06-15 04:27:32
如题,
什么情况下需要用到虚拟类?
有简单的实例说明一下么?
...全文
428 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jinglecat 2007-06-15
  • 打赏
  • 举报
回复
建议 LZ 先找本 面向对象程序设计 学学, 就明白老, 给你说得明明白白的
kokyulei 2007-06-15
  • 打赏
  • 举报
回复
1、虚类:如果该类拥有一个或一个以上虚方法,则该类即为虚类,如上面的类。
2、虚方法:声明的关键字为Virtual.因为虚方法可以被子类覆盖,所以
编译器在编译时并不能知道该虚拟方法的地址,因此编译器通过建立一个虚拟方法
表来查找运行时的函数(过程)地址。虚拟方法的调用方式和静态方法的调用方式相同。
3、虚方法表:一张记录虚拟方法和其调用地址等信息的表。一个对象的虚拟方法表既包括自己的虚拟方法也包括从祖先继承下来的虚拟方法表。因此比较耗内存。
虚拟方法表是编译器自动产生的,不需要人干预。
虚拟方法是实现多态的一种方法。父类中的虚拟方法可以被子类覆盖。
4、抽象方法必须是虚拟方法或动态方法,抽象方法不能有实现代码。抽象方法的实现代码是在其子类中实现。因此具有抽象方法的类不能被实例化。
-------------------
在网上找的,看能帮你弄懂一点不?
  • 打赏
  • 举报
回复
人Man和老虎Tiger必须定义为可实例化的类。
——————————————————————————————————————
不是“必须”,完全应该按照需要。老虎也可以设计成虚拟类,人也可以。
  • 打赏
  • 举报
回复
假设你的程序中有一个“短信服务”类,一个“使用中移动西藏公司短信服务”类(子类),这样的一个对象x既是“使用中移动西藏公司短信服务”类性的对象,也是“短信服务”类型的对象,并不意味着说“短信服务对象x”没有实际意义。对象本身的存在与它的类型无关,这个对象x完全可以能还是“程序类”、“商品类”、“电信行业”类等,对象的存在与它属于哪一类、是否只有一个类型还是多个类型无关。本来应该分开考虑,没有那么强的联系。Virtual类是一种纯粹表现形式,说成“属于这个类的对象存在没有实际的意义”容易引起对复杂软件系统的设计时概念混淆。
ise_Keven1 2007-06-15
  • 打赏
  • 举报
回复
打个比方:
动物,人,老虎...
动物Animal可以做成一个虚类,作为人和老虎的父类。
人Man和老虎Tiger必须定义为可实例化的类。
Animal类中可能有一些虚函数(虚方法),需要等待子类去实现的,如果子类没有完全实现虚类的虚方法,那么这个子类也必须声明为是虚类的。
  • 打赏
  • 举报
回复
如果有一个方法或者属性是Virtual的,你根本无法在类型定义中把其内容写清楚,那么这个类只能成为虚拟类。

对于收到的短信要通过事件通知给客户程序,这是客户程序的职责,是事件的适用功能。

但是触发事件之前网关必须自己先对发送方进行黑名单(防火墙)检查,但是每一种网关如何实现此功能你并不确定,这是短信网关自己的职责,是子类override父类来实现的,不是客户的职责。
amandag 2007-06-15
  • 打赏
  • 举报
回复
是抽象类吧..

当一个类的对象存在没有实际的意义,只有做为派生类的基类的价值,我们用抽象类
wei123456 2007-06-15
  • 打赏
  • 举报
回复
不想重复声明类对象的时候就可以使用虚类了
hunter_32 2007-06-15
  • 打赏
  • 举报
回复
他说的虚拟的类就是虚类。
hunter_32 2007-06-15
  • 打赏
  • 举报
回复
档这个类没有事例化的意义,并且必须派生出别的类的时候。可以定义成虚拟的类。
Jinglecat 2007-06-15
  • 打赏
  • 举报
回复
请问何谓 虚拟类 ?

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧