首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么方法在Java中默认是虚拟的,而在C#中默认是非虚拟的?

为什么方法在Java中默认是虚拟的,而在C#中默认是非虚拟的?
EN

Stack Overflow用户
提问于 2009-06-10 00:58:44
回答 4查看 4.9K关注 0票数 18

在Java语言中,缺省情况下方法是虚的;而C#正好相反。

哪种更好些呢?每种方法的优点和缺点是什么?

EN

回答 4

Stack Overflow用户

发布于 2009-06-10 01:05:35

默认情况下,Java的方式更简单,C#的方式更细粒度,更安全,效率更高。哪个更好,取决于啤酒持有者的眼睛。

票数 7
EN

Stack Overflow用户

发布于 2009-06-10 01:12:32

.Net强制程序员定义哪些函数可以被覆盖,而缺省情况下,除非使用了final关键字,否则Java函数可以被覆盖。

如果您是Open/Close Principle的坚定拥护者,那么您可能倾向于支持Java way。最好是允许类被扩展,方法被重写,这样基本的功能/代码就不会受到影响。出于这个原因,我支持/更喜欢Java方式。如果我从不同的角度来看待这个问题,我的观点可能正好相反。

票数 6
EN

Stack Overflow用户

发布于 2009-06-10 01:13:11

这是一个时间上的扰动。默认情况下,C++使用虚拟关键字和最终关键字。

Java遵循C++,并试图取其最好的并改进其缺点。过度使用继承的危险还没有暴露出来,所以Java选择使用final关键字和virtual作为默认值。

C#遵循Java,并具有后见之明的好处。在观察了C++的经验之后,Anders选择回到Java约定。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/973240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档