回答
是虚拟方法有身体和抽象只是一个签名????
没错。的一点是,虚拟方法可以在派生类中重写,而抽象方法必须被重写。同样,至少有一个抽象方法的类本身必须是抽象的,即它不能直接实例化,因为它的实现(部分)缺失。
最后,每一个抽象方法是也虚拟暗示。基本上只是意味着该方法在运行时被分派到正确的类,因此可以被重写以实现运行时多态性。
由于抽象方法必须被覆盖,它们实际上是一个像接口和代码一样的契约,除非你正确地实现它们,所以它是让你的代码的用户实现他们必须实现的代码的一种方式,特别是如果他们懒惰,对吗? – Xaisoft 2012-07-19 18:44:39
@ Xaisoft正确,但是虚拟(非抽象)方法也构成一个契约,因为契约是从使用类(=客户端)的角度来看的。重要的是客户可以使用它所宣传的类的功能。 – 2012-07-19 19:03:21
我同意,但我的意思是,如果你声明一个虚拟的方法,客户端即使他们应该也不必实现它。另外一个虚拟方法可以有默认行为。客户必须实现一个抽象方法,它不能具有默认行为。如果你真的想要实施一种方法并将责任放在客户端上,似乎你抽象路线与虚拟路线相比的唯一原因是。 – Xaisoft 2012-07-19 19:32:52
抽象意味着你必须覆盖它。虚拟意味着你可以覆盖它。或多或少。
此外:使用类中的抽象方法,您的整个类将是抽象的,这意味着您不能创建此类的实例,只能创建派生的非抽象子类。 – dbemerlin 2010-03-16 13:40:18
我同意在这里两个答案,所以我就不再赘述了。但是这里有一个可能有用的链接。
- 1. '非虚拟界面'和'抽象界面'有什么区别?
- 2. 并行和虚拟有什么区别
- 3. 抽象类和Mixin有什么区别?
- 4. 抽象和封装有什么区别?
- 5. 继承时抽象类和非抽象类有什么区别
- 6. 抽象与外观有什么区别?
- 7. 带空虚的虚拟方法和纯虚拟方法有什么区别?
- 8. 覆盖非虚拟功能和虚拟功能有什么区别?
- 9. 虚拟机经典和虚拟机在天蓝色之间有什么区别?
- 10. Java客户端虚拟机和服务器虚拟机有什么区别?
- 11. 虚拟和抽象方法
- 12. 硬件和硬件辅助虚拟化有什么区别?
- 13. 虚拟变量和单热编码有什么区别?
- 14. Full,Para和硬件辅助虚拟化有什么区别?
- 15. 提交和锁定虚拟内存有什么区别?
- 16. 网站和虚拟目录有什么区别
- 17. 个人和虚拟主机证书存储有什么区别?
- 18. 动态和虚拟方法有什么区别?
- 19. DbSet <>和虚拟DbSet <>有什么区别?
- 20. 非虚拟方法和密封方法有什么区别?
- 21. Azure虚拟机和云服务之间有什么区别
- 22. 解析树和抽象语法树有什么区别?
- 23. 抽象类和接口之间有什么区别?
- 24. DBpedia中的抽象和评论有什么区别
- 25. 抽象类和静态类之间有什么区别?
- 26. 抽象类和继承之间有什么区别?
- 27. 具体RTN和抽象RTN有什么区别?
- 28. “抽象解析树”和“解析树”有什么区别?
- 29. 界面和抽象类有什么区别?
- 30. 继承和抽象类有什么区别?
顺便说一句,部分方法,相比于抽象方法,使您可以创建一个没有不需要被重写的实现方法。 – Brian 2010-03-16 13:43:56