1、静态与非静态的区别:是否有static
非静态:
1)在非静态类中,既可以有实例成员,也可以有静态成员
2)在调用实例成员,通过 对象.实例成员
在调用静态成员时,通过 类名.静态成员
静态:
1)静态类中只能有静态成员,不能有实例成员
2)静态类不能被实例化,即不能创建对象
总结:静态成员必须使用类名去调用,而实例成员使用对象去调用
静态函数中只能访问静态成员,不允许访问实例成员
实例方法中既可以访问实例成员,也可以访问静态成员
静态类的使用:
1)如果你想要你的类当做一个“工具类”,这个时候可以考虑写成静态的
2)静态类在整个项目中资源共享
释放资源(GC,Garbage Collection 垃圾回收器):只有在程序全部结束后,静态类才能释放资源
2、构造函数
定义:构造方法用来创建对象,并且可以在构造函数中对对象进行初始化。减少了代码的冗余
作用:帮助我们初始化对象(给对象的每个属性依次赋值)
构造函数是一个特殊的方法:
1)没有返回值,也不能写void
2)构造函数名必须和类名一样
public Student(){}
构造函数的访问修饰符必须是public
构造函数的执行:构造函数在创建对象的时候执行
构造函数可以重载(具有相同的函数名,具有不同的参数)
****类当中会有一个默认的无参数的构造函数,当你写一个新的构造函数,不管是有参数的还是没有参数的,默认的都被干掉了
3、new关键字
new帮我们做了三件事:
1)在内存中开辟了一块空间
2)在开辟的空间中创建对象
3)调用对象的构造函数进行初始化对象——所以构造函数的访问修饰符必须是public
4、this关键字
作用:1)代表当前类的对象 this.Name=name;
2)在类中显式的调用本类的构造函数 public Student(string name,int age,char gender):this(name,0,gender) //调用了本类构造函数的name和gender
5、析构函数
语法:~Student(){函数体}
作用:当程序结束的时候,析构函数执行,释放资源