繁体   English   中英

Java / C#静态类之间的主要区别是什么?

[英]what are the main differences between a Java/C# static class?

在C#中,静态类是一个类,除了不支持继承之外,还可以具有“普通”类除了实例成员之外的任何类型的成员。

不太确定静态类在java中是如何工作的,但基于我看到的有限数量的java代码,我很清楚它们的工作方式并不完全相同。

有人可以列举一下差异吗?

Java中的静态类是该语言提供的三种嵌套类之一(另外两种是非静态嵌套类和函数作用域类)。

Java的静态类的行为与嵌套的C#类的行为相同:它们可以访问封闭类的静态成员,但是如果没有对封闭对象的附加引用,则无法访问实例成员。 相反,非静态嵌套函数可以访问实例变量,但是您需要一个封闭实例才能实例化。

在C#中

使用静态类来包含与特定对象无关的方法。 例如,创建一组不对实例数据起作用且与代码中的特定对象无关的方法是一种常见的要求。 您可以使用静态类来保存这些方法。

静态类的主要特征是:

  • 它们只包含静态成员。
  • 它们无法实例化。
  • 他们是密封的。
  • 它们不能包含实例构造函数

在Java中:

  • 只有嵌套类可以是静态的。

  • 可以在类中拥有静态成员

在Java中,您不能将最外层的类作为静态。 只能使用static修饰符声明内部类。 这样做可以防止内部类访问外部类的实例成员。

在C#中,您可以使用static修饰符定义外部类,这使得无法创建该类的实例变量。 它们有两个不同的用途。 要在Java中创建类似的效果,可以定义private no-args构造函数。 单例模式实现就是这样做的。 同样在Java中,也可以创建一个类,其所有成员都定义为static,但这并不妨碍创建新实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM