我发现很难清楚我对静态和非静态(实例)成员的实际概念的看法,经过这么多论坛的研究,我决定在这里提出我的问题:
静态和非静态成员之间有什么区别?
答案 0 :(得分:10)
可以直接从类中访问static
方法,而必须从实例访问non-static
方法(或我喜欢调用它们的实例方法)。这就是为什么需要对例如方法进行实例化的原因,而对于静态方法则不需要。
在OOP中,static variables
用于实例变量无法存储的值。 static methods
无法访问类中的实例方法或变量。当然这是有道理的,因为静态方法不知道我们试图引用的类的哪个实例。
e.g。假设您想要计算一个类的实例数量?你会如何将它存储在一个实例中?
参考文献:
答案 1 :(得分:6)
static
成员是每个类一个,但非静态成员是每个实例一个。
static
成员可以通过其类名来访问它们,但是通过对象引用访问非静态成员。
static
成员在不实例化对象的情况下不能使用非静态方法,但非静态成员可以直接使用static
成员。
static constructor
用于初始化静态字段,但对于非静态字段,则使用普通实例构造函数。
有关与效果相关的观点,请参阅here。