构造对象其实就是创建对象。也就是我们在创建对象过程中,需要调用的方法,叫做构造方法。
研究构造方法:主要是研究对象是如何初始化的。
构造方法默认:当我们编写一个类的时候,如果你没有显式地写出任何构造方法,这时候编译器编译的时候,会个这个类默认添加一个无参数的构造方法。当然你如果添加了任意形式的构造方法,默认的都不会在产生。
构造方法规范:
public 类名称([参数1],[参数2]...)
{
}
注意:构造方法不能有任何返回值。名称必须和类名完全一样。
调试默认构造方法的调用过程发现:
第一、首先初始化字段。
第二、初始化有默认值的属性。
第三、执行构造方法。
为什么是这样的顺序?
首先搞清楚,构造方法是用来初始化的!初始化什么?可初始化的内容有字段、属性、或其他的相关新的的读取和写入。既然在构造方法中,可能调用字段或者属性等,因此必须先对字段和属性做初始化。
也就是我们可以在一个类中,添加若干构造方法,这些构造方法的名称都是一样的,但是方法的参数类型或个数是不一样的。
注意:this关键字非常总要,this后面可以使用的都是类的成员(字段、属性、方法),尤其是成员变量和局部变量同名的时候。this区分是非常必要的。
使用:this关键字调用其他的构造方法。注意,执行的顺序是先调用内层的构造方法。
方法重载调用是根据参数的类型和个数完全对应来查找的。
三、实例方法
实例方法就是通过对象去调用的方法,是我们程序编写的核心内容。
调用形式:对象名.实例方法名(参数…)
定义规范:
访问修饰符 返回值类型 方法名称(方法参数....)
{
//方法体....
}
访问修饰符:public、private…
返回值类型:没有返回值用void 其他的返回值类型是我们可以用的所有类型(基础数据类型、对象类型)
方法名定义:使用Pascal命名法,尽量用动宾短语,或动词
【1】没有返回值、没有参数的的方法
使用场景:通常是完成一个固定的任务,这个任务不需要参数,也不需要返回给调用者数据。
比如做数据的备份、数据的优化、定时的数据报表、相关信息的定时存储等…
【2】没有返回值,有参数的方法
使用场景:需要完成一个任务,提供一些参数,但是不需要返回给调用者。
【3】有返回值,有参数
使用场景:需要完成一个任务,提供一些参数,同时需要把结果给调用。
命名参数(也就是说调用方法的时候,给参数前面写上参数名称,这样可以不用考虑顺序)
使用场景:在参数比较多的时候,还是有用的。
静态方法:就是使用static修饰的方法,不能通过对象去调用,而是直接通过类名.方法名的形式去调用。
public static string GetStaticInfo(string equipName)
{
string result = $"设备ID:{EquipID} 设备名称:" +
$"{equipName} 压力:{Pressure} 采集时间:{CollectionTime}";
return result;
}
这个会出错。愿意:静态方法内部不能“直接调用实例成员(字段、属性、方法)”
静态方法的特征:
所谓静态,就是不需要new对象,直接通过类完成。这些静态的成员(字段、属性、方法)在你的程序启动的时候由CLR负责的,也就是说随着程序的启动自动初始化完成。
意味着这些静态的成员,在程序启动后,同时就存在了。
但是实例成员必须是在new之后才存在的,所以,静态的是不能直接调用实例的,原因就是实例的成员并不存在。解决方法就是调用之前,必须得到成员的实例对象。
五、总结实例方法和静态方法
实例方法或其他的成员,换句话说,我们创建的对象,在你使用完毕后,会被GC(垃圾回收机制)回收,从而释放内存,因为我们的程序,在不断的创建对象,销毁对象。
静态的成员,是不会受GC控制的,也就是说你的程序不关闭,这些成员占用的内存空间,永远都不会释放。
所以,静态的成员,必须慎重使用。使用非常频繁的,占用空间又不大的。可以适当使用。