第1个回答 2011-03-26
类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR;特指:C#语言) 自动加载。
使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法
在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。例如:
class test{
public:
test(){}
~test(){}
public:
//静态成员函数
static int getCount(){
return m_nCount;
}
private:
//静态数据成员
static int m_nCount;
};
int test::m_nCount=0;
静态数据成员和普通数据成员区别较大,体现在下面几点:
(1)普通数据成员属于类的一个具体的对象,只有对象被创建了,普通数据成员才会被分配内存。而静态数据成员属于整个类,即使没有任何对象创建,类的静态数据成员变量也存在。
(2)因为类的静态数据成员的存在不依赖与于任何类对象的存在,类的静态数据成员应该在代码中被显示的初始化,一定要在类外进行,例如上例。
(3)外部访问类的静态成员只能通过类名来访问,例如:test::getCount()。
(4)类的静态成员函数无法直接访问普通数据成员(可以通过类的指针等作为参数间接访问),而类的任何成员函数都可以访问类的静态数据成员。
(5)静态成员和类的普通成员一样,也具有public、protected、private3种访问级别,也可以具有返回值、const修饰符等参数
第2个回答 2011-03-17
静态类不能实例化(也就是我们通常说的不能new),静态类中只能包含静态成员!如果一个类中有个静态方法,那么你可以直接用类名去调用这个方法!
还有就是实例类也可以包涵静态成员(比如属性),但是你在实例化一个对象时。他首先会初始化这个类中的静态成员,然后再初始化非静态成员!所以一楼的说法欠妥当。
例如你某个类中有个 public static int number=100;
那么你所有这个类实例化出来的对象的这个number的值都指向同一个对象,改变任何一个对象的这个number的值,另一个对象的number的值也跟着改变了!~
第3个回答 2011-03-17
都是在程序一开始运行时就分配空间的意思,非静态方法、成员、类等只有在调用到的时候才分配空间,如果你的程序频繁用到一些工具方法,就可以把这些方法设为静态方法
第4个回答 2011-03-23
静态方法被调用的时候是通过类名访问的比如Users类中有一个表态方法Add(),调用的时候可以直接这个写 Users.Add(); 静态成员包括静态方法和静态的全属变理,而静态类就是在声名类的时间在class前面加static关键字