文章目录
1.静态成员、实例成员
2.静态类
3.类的静态成员和非静态成员区别
--------------------------------------分割线---------------------------------------------
1.静态成员、实例成员
1.1定义及说明
数据成员:
静态成员:静态成员变量是和类相关联的,可以作为类中"共"有的变量(是一个共性的表现),他不依赖特定对象的存在,访问的时候通过类名加点操作符加变量名来访问.
实例成员:实例成员变量是和对象相关联的,访问实例成员变量依赖于实例的存在.
函数成员:
静态方法:静态方法是不属于特定对象的方法,静态方法可以访问静态成员变量和静态方法;静态方法不可以直接访问实例变量和实例方法,可以间接调用,首先要创建一个类的实例,然后通过这一特定对象来调用静态方法;
实例方法:一个实例方法的执行与特定对象关联,他的执行需要一个对象存在。实例方法可以直接访问静态变量和实例变量,当多个实例对象存在时,内存中并不是存在美个特定的实例方法的拷贝,而是,相同类的所有对象都共享每个实例方法的一个拷贝(实例方法只占用“一套”空间)。
| 静态成员变量 | 静态方法 | 实例成员变量 | 实例方法 | |
| 静态方法 | 直接访问 | 直接访问 | 不可直接访问 | 不可直接访问 |
| 实例方法 | 直接访问 | 直接访问 | 直接访问 | 直接访问 |
总之:实例方法的存在必须要有对象实例的存在,如果对象实例不存在,则实例方法也就没有调用它的主人。静态方法的存在前提是类的存在,所以无需声明和New对象。
1.2代码演示
class Program { static void Main(string[] args) { Class1.CallObjectFunc();//静态调用 Console.WriteLine(Environment.NewLine); Class1 tmpClass = new Class1();//实例调用 tmpClass.ObjectFunc(); Console.ReadKey(); } } class Class1 { static int Class_m = 9;//静态成员 private int object_m = 8;//实例成员 public static void CallObjectFunc() { Console.WriteLine("------------静态方法调用开始:"); Class1 class1 = new Class1(); class1.ObjectFunc(); Console.WriteLine("object_m:" + class1.object_m.ToString()); Console.WriteLine("------------静态方法调用结束:"); } public void ObjectFunc() { Console.WriteLine("实例方法调用开始:"); Console.WriteLine("Class_m:" + Class_m.ToString()); Console.WriteLine("实例方法调用结束:"); } }