c#sealed和Java#x27之间有什么功能上的区别吗;最后一个关键词是什么?
可能重复:c#sealed和Java#x27之间有什么功能上的区别吗;最后一个关键词是什么?,c#,java,final,sealed,C#,Java,Final,Sealed,可能重复: 在Java中,final不仅仅适用于一个类 所以,我想知道:这两个关键字之间有什么功能上的区别吗 谢谢你,很抱歉问了一个不太好的问题 快速的谷歌搜索并不能满足我的需求。看看这个答案:Java的final关键字相当于C#的sealed、readonly和sealed关键字 这三种语言中的两种在Java和C语言中有些不同: 在Java中,默认情况下方法是虚拟的,因此任何方法都可以声明为final,以防止被重写。在C#中,默认情况下方法不是虚拟的,因此只能声明被重写的方法sealed(以
在Java中,final不仅仅适用于一个类 所以,我想知道:这两个关键字之间有什么功能上的区别吗 谢谢你,很抱歉问了一个不太好的问题
快速的谷歌搜索并不能满足我的需求。看看这个答案:Java的
final
关键字相当于C#的sealed
、readonly
和sealed
关键字
这三种语言中的两种在Java和C语言中有些不同:
在Java中,默认情况下方法是虚拟的,因此任何方法都可以声明为final
,以防止被重写。在C#中,默认情况下方法不是虚拟的,因此只能声明被重写的方法sealed
(以防止它们被进一步重写)
在Java中,可以声明任何变量或字段final
,以防止其在初始化后被更改(对于字段,则在构造函数之外)。在C#中,字段可以声明为只读,以获得完全相同的效果,但局部变量不能。请注意,Java没有C#的const
关键字的等价物。(C#中的const
s在编译时进行计算,值是硬编码的,而不是被引用)
对于类,C#的
sealed
类和Java的final
类是完全相同的(AFAIK)。dup:为什么不简单地比较一下文档呢。好吧,让我们和平地结束这个问题。谢谢大家!!我必须选择一个被接受的答案。@Matthew:那不是打字错误。C#对sealed
关键字有两种不同的用法。在VB中,它们是notheritable
和NotOverridable
我发现答案有些混乱,这就是为什么我认为这是一个打字错误sealed
是一个具有多个上下文含义的关键字(与许多关键字一样,包括final
、default
、using
等)。C#const
在许多地方使用,Java将在这些地方使用静态final
;因此,我认为它应该作为等价物之一列在顶部。@Matthew:No.const
在C#中并不等同于static final
。我知道没有1对1的映射(final也用于您列出的其他方式),这就是为什么我说“很多地方”。但是如果你有一个Java常量,比如private static final int MY_NUMBER=3
(这当然很常见),我相信private const int MY_NUMBER=0
是到C#的最佳映射;当然,不能将static与C#常量一起使用。因此const
与static final
的某些用法最接近。