Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#sealed和Java#x27之间有什么功能上的区别吗;最后一个关键词是什么?_C#_Java_Final_Sealed - Fatal编程技术网

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
的某些用法最接近。